1 回答
TA贡献1851条经验 获得超3个赞
好吧,虽然我还没有读到为什么它表现成这样,但至少现在我终于找到了解决问题需要做些什么:
一旦每次迭代中的查询都实现了其目的(在我的情况下,从需要处理的数据库中获取第一条记录,然后对其进行处理),我接下来需要调用以下内容:并解决了我的问题。session.expire_all()
因此,在我上面的示例中,它现在应该如下所示:
def main():
while True:
item = Session.query(Queue).order_by(Queue.id.asc()).filter_by(status=0).first()
if item:
try:
item.status = 1
Session.commit()
print(f'Item id: {item.id}')
Session.expire_all() # <---- Add this line
except:
print('error')
time.sleep(2)
这是SQLAlchemy文档中大致指向这个方向的部分:SQLAlchemy - Refreshing / Expireing
添加回答
举报
