申请包括:
问题是主进程会话似乎没有注册在该会话之外完成的db中的更改。如何确保它呢? (截至目前,我正在关闭并在每次进程唤醒并进行检查时重新打开会话。)
答案 0 :(得分:1)
每次进程醒来并进行检查时,我都会关闭并重新打开会话
SQLAlchemy不会像这样工作。会话中会跟踪更改。
someobj = Session.query(SomeClass).first()
将someobj
放入Session
内部缓存中。执行someobj.attr = val
时,它会标记与someobj关联的会话中的更改。
因此,如果您从某个session1中提取了object1,然后关闭了session1,则object1不再与任何会话关联,也不会被跟踪。
最佳解决方案是在改变时立即提交:
object1 = newsession.add(object1)
newsession.commit()
否则,您必须管理自己的对象缓存,并在每次检查时合并所有对象。