我很好奇是否有办法展示当前会话中的内容?
或许是一种检查会话是否为空的方法,以便我可以执行以下操作。
if db.session:
db.session.commit()
这种方式只有在会话中的某些内容等待提交时才会提交。
答案 0 :(得分:11)
检查会话状态有以下属性:
Session.new
- 用于将添加到数据库的对象。Session.dirty
- 用于对象,将更新。Session.deleted
- 用于将从数据库中删除的对象。这三个属性可用于检查会话状态:
if not db.session.new and not db.session.dirty and not db.session.deleted:
# do smth
但即使会话中没有任何更改,也可以安全地呼叫session.commit()
。如果您没有做一些特别的事情,则不需要在提交之前显式检查会话状态。
还有一个名为Session._is_clean()
的私有方法,用于检查是否有任何更改要刷新到数据库。它是这样实现的:
def _is_clean(self):
return not self.identity_map.check_modified() and \
not self._deleted and \
not self._new