如何多次迭代ResultProxy?

时间:2016-10-05 17:53:17

标签: python sqlalchemy

假设我执行以下查询:

>>> for record in results:
...     print(record['path'])
... 
Top.Collections.Pictures.Astronomy.Stars
Top.Collections.Pictures.Astronomy.Galaxies
Top.Collections.Pictures.Astronomy.Astronauts

它按预期返回行:

>>> for record in results:
...     print(record['path'])
...
>>> 

当我尝试第二次或第三次迭代时,对象为空:

{{1}}

如何保存和重复使用ResultProxy多次迭代?

1 个答案:

答案 0 :(得分:5)

你可能有一个迭代器对象被返回,所以一旦它迭代完毕后你就会筋疲力尽,你就不能再重复它了。假设您的结果不是很大,您可以这样做:

results = db.engine.execute(sql_query) 
results = list(results)

将迭代器对象转换为一个列表,你可以多次迭代它。