Python中extract函数仅返回单条记录,需返回全表记录并跨函数使用
问题分析与解决
你的extract()函数只返回单条记录的核心原因是:for循环中第一次执行return row时,函数会直接终止并返回当前行,后续循环迭代完全不会执行。
修正方案(直接返回全量数据)
fetchall()本身就会返回查询到的所有记录组成的列表,直接返回该结果即可,无需额外的for循环:
def extract(self): return self.oracle_conn().execute('select * from employees').fetchall()
可选方案(按需处理后返回)
如果需要在返回前对每条记录做格式转换等处理,可以用生成器(yield)逐个返回记录,调用方可以通过迭代获取所有数据:
def extract(self): data = self.oracle_conn().execute('select * from employees').fetchall() for row in data: # 此处可添加对row的自定义处理逻辑 yield row
调用生成器获取全量数据的方式:
all_employees = list(your_instance.extract())
内容的提问来源于stack exchange,提问作者Jim Macaulay
相关产品推荐
相关产品推荐

