【问题标题】:How to force SQLAlchemy to update rows如何强制 SQLAlchemy 更新行
【发布时间】:2013-10-10 03:33:52
【问题描述】:

我目前正在使用带有两个不同会话对象的 SQLAlchemy。在一个对象中,我将行插入到 mysql 数据库中。在另一个会话中,我正在该数据库中查询最大行 ID。但是,第二个会话不是从数据库中查询最新的。如果我手动查询数据库,我会看到正确的、更高的最大行 ID。

如何强制第二个会话查询实时数据库?

【问题讨论】:

  • 为什么需要两个会话来达到这个目的?
  • 我可能不知道,但这是目前编写代码的方式,如果有一个简单的解决方案可以解决这个问题,我宁愿不重构它。

标签: python mysql database session sqlalchemy


【解决方案1】:

有一个类似的问题,出于某种原因,我不得不提交两个会话。哪怕只是阅读。

这可能是我的代码的问题,不能使用相同的会话,因为代码将在不同的机器上运行。 SQLalchemy 的文档还说,每个会话只能由一个线程使用,尽管 1 次读取和 1 次写入应该不是问题。

【讨论】:

    【解决方案2】:

    第一个会话需要提交以刷新对数据库的更改。

    first_session.commit()
    

    Session 将所有对象保存在内存中,并将它们一起刷新到数据库中(延迟加载,以提高效率)。因此first_session 所做的更改对于正在从数据库读取数据的second_session 是不可见的。

    【讨论】:

      猜你喜欢
      • 2018-05-14
      • 2011-02-06
      • 2012-03-28
      • 2011-05-31
      • 2012-05-06
      • 2011-04-28
      相关资源
      最近更新 更多