如何多次迭代ResultProxy?

JZ.*_*JZ. 2 python sqlalchemy

假设我执行以下查询:

results = db.engine.execute(sql_query)
Run Code Online (Sandbox Code Playgroud)

它按预期返回行:

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

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

>>> for record in results:
...     print(record['path'])
...
>>> 
Run Code Online (Sandbox Code Playgroud)

如何保存和重用ResultProxy以多次迭代它?

Mos*_*oye 5

你可能有一个迭代器对象被返回,所以一旦它迭代后它已经耗尽,你就不能再重复它了.假设您的结果不是很大,您可以:

results = db.engine.execute(sql_query) 
results = list(results)
Run Code Online (Sandbox Code Playgroud)

这会将迭代器对象转换为一个列表,您可以像往常一样迭代它.