0
获得了一个嵌套循环,其内部循环是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])
但是为什么?假设我没有一个结果代理对象,因为我在内部循环中有'for range in(5)'作为内部循环,所以我希望它可以一直迭代而不会出错。为什么结果代理对象不同?是维护与数据库的连接的结果代理对象,以便它在1次迭代后耗尽?我不明白。 – lukik
'result'是指向结果中的一行的数据库游标的代理。在内部循环结束时,它指向最后一行之后。因此,要返回,您需要将该光标重置回第一行。 – arocks