SQLAlchemy - 有没有办法查看当前会话中的内容?

Cho*_*key 9 python session sqlalchemy flask

我很好奇是否有办法显示当前会话中的内容?

或者也许是一种检查会话是否为空的方法,以便我可以执行类似下面的操作.

if db.session:
    db.session.commit()
Run Code Online (Sandbox Code Playgroud)

这样,只有在会话中的某些内容等待提交时才会提交.

Yar*_*min 17

检查会话状态有以下属性:

这三个属性可用于检查会话状态:

if not db.session.new and not db.session.dirty and not db.session.deleted:
    # do smth
Run Code Online (Sandbox Code Playgroud)

但是,session.commit()即使会话中没有任何更改,也可以安全地进行呼叫.如果您没有做一些特殊的事情,则不需要在提交之前显式检查会话状态.


还有一个名为的私有方法Session._is_clean(),用于检查是否有任何更改要刷新到数据库.它的实现方式如下:

def _is_clean(self):
    return not self.identity_map.check_modified() and \
        not self._deleted and \
        not self._new
Run Code Online (Sandbox Code Playgroud)