循环遍历结果代理对象

时间:2014-01-22 09:20:44

标签: python for-loop sqlalchemy

有一个嵌套循环,内部循环是sqlalchemy结果代理对象。我遇到的问题是,当外部循环的第二次迭代被实例化并返回迭代resultproxy对象时,脚本存在并带有错误

sqlalchemy.exc.ResourceClosedError: This result object is closed.

这是我的代码。当X>>时,内部循环失败。 0:

tbl = Table('users', self.meta, autoload=True, autoload_with=Engine)
stmt = select([tbl.c.id, tbl.c.name])
result = self.CONN.execute(stmt)
for x in range(2):
    for row in result:
        print(row[tbl.c.id])

1 个答案:

答案 0 :(得分:1)

你正在耗尽第一个内循环本身的连接。尝试制作副本并将其存储在列表中:

tbl = Table('users', self.meta, autoload=True, autoload_with=Engine)
stmt = select([tbl.c.id, tbl.c.name])
result = self.CONN.execute(stmt)
ids = [row[tbl.c.id] for row in result]
for x in range(2):
    for i in ids:
        print(i)