有没有办法在创建会话对象时,我可以将其配置为定期执行flush()?
我需要此功能的原因是因为在会话范围内,它在内存中运行非短后台作业。我希望程序使用flush()定期更新DB的作业进度,以便我的客户端可以从DB查询进度。
目前,我的解决方案是使用另一个定期执行session.flush()的线程。
谢谢!
答案 0 :(得分:0)
您无需在代码中反复拨打session.flush()
。默认情况下,SqlAlchmey autoflush
设置为True。这意味着任何更新,删除,插入操作都已添加到提交的transeaction中。因此,对DB的任何查询总是获取最新数据,因为即使是激活了选择查询,也应首先提交未提交的更改。
In [8]: session.autoflush
Out[8]: True
In [9]: session.autocommit
Out[9]: False