我目前正在使用带有两个不同会话对象的SQLAlchemy。在一个对象中,我将行插入到mysql数据库中。在另一个会话中,我正在查询该数据库的最大行ID。但是,第二个会话不是从数据库中查询最新的。如果我手动查询数据库,我会看到正确的,更高的最大行ID。
如何强制第二个会话查询实时数据库?
答案 0 :(得分:2)
第一个会话需要提交刷新对数据库的更改。
first_session.commit()
Session保存内存中的所有对象并将它们一起刷新到数据库(延迟加载,以提高效率)。因此first_session
所做的更改对于从数据库中读取数据的second_session
是不可见的。
答案 1 :(得分:0)
有一个类似的问题,由于某种原因我必须提交两个会话。即使只是阅读的那个。
这可能是我的代码的问题,但是不能使用相同的会话,因为代码将在不同的机器上运行。另外,SQLalchemy的文档说每个会话只应由一个线程使用,尽管1个读取和1个写入应该不是问题。