自动检测未刷新的SQLAlchemy模型更改?

时间:2016-04-27 21:39:32

标签: debugging flask sqlalchemy flask-sqlalchemy

在应用程序中任何位置Flask的任何请求结束时,检查SQLAlchemy中是否存在“悬空”和未刷新的任何数据更改的有效自动/一般方法是什么?

换句话说,我希望捕获任何SQLAlchemy模型更改,这些更改只是在请求结束时“扫地”,因为这表明编程中的错误被特定请求结束的事实所隐藏(并且会话会破坏所有未提交的未刷新的更改。)

当请求结束时,Flask-Sqlalchemy会自动销毁会话:http://flask.pocoo.org/docs/0.10/patterns/sqlalchemy/;我认为这涉及“到期”所有未完成的更改:http://docs.sqlalchemy.org/en/latest/orm/session_api.html#sqlalchemy.orm.session.Session.expire

(我之所以想到这个问题的原因是我暂时将autoflush设置为ON,突然在API端点上我看到一些我不知道的模型更改,并且在后续查询时被意外刷新运行相同的API端点!)

1 个答案:

答案 0 :(得分:1)

您可以使用sqlalchemy session.deleted session.dirty 检查session

中未刷新的对象