【问题标题】:Will SQLAlchemy update the content of objects in the middle of a session?SQLAlchemy 会在会话中间更新对象的内容吗?
【发布时间】:2014-06-05 15:48:36
【问题描述】:

在 SQLAlchemy 文档中是这样说的:

“当使用 Session 时,重要的是要注意与之关联的对象是 Session 所持有的事务的代理对象 - 有多种事件会导致对象重新访问数据库为了保持同步。可以从 Session 中“分离”对象,并继续使用它们,尽管这种做法有其注意事项。通常,您可以在需要时将分离的对象与另一个 Session 重新关联再次与他们合作,以便他们可以恢复表示数据库状态的正常任务。” [http://docs.sqlalchemy.org/en/rel_0_9/orm/session.html]

如果我正在读取一些对象、进行一些操作和更多查询并保存一些对象的会话中间,在提交之前,是否存在其他用户对 dbase 的更改会意外更新我的对象的风险当我和他们一起工作的时候?

也就是说,上面所说的“各种事件”是什么?

将事务隔离级别设置为最大的答案是什么? (我正在使用带有 Flask-SQLAlchemy 和 Flask-Restful 的 positionSQL,如果其中任何一个重要的话。)

【问题讨论】:

    标签: python session sqlalchemy


    【解决方案1】:

    不,SQLAlchemy 不会随时监控数据库的更改或更新您的对象。我可以想象这将是相当昂贵的操作。 “各种事件”更多是指 SQLAlchemy 的内部状态。我不熟悉所有的“事件”,但是例如当对象被标记为过期时,SQLAlchemy 会自动从数据库中重新加载它们。一种这样的情况是调用session.commit() 并再次访问任何对象的属性。

    更多:Documentation about expiring objects

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-26
      • 2014-02-06
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 2014-08-09
      相关资源
      最近更新 更多