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