SQLAlchemy会在会话中更新对象的内容吗?

时间:2014-04-21 14:51:11

标签: python session sqlalchemy

在SQLAlchemy文档中,它说:

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

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

换句话说,上面提到的“各种事件”是什么?

是否将事务隔离级别设置为最大值? (我正在使用poseSQL与Flask-SQLAlchemy和Flask-Restful,如果有任何重要的话。)

1 个答案:

答案 0 :(得分:1)

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

更多信息:Documentation about expiring objects