python - Flask sqlalchemy 检查 db.session 中的对象是否准备好提交

标签 python flask sqlalchemy flask-sqlalchemy

我有新创建的对象。我想知道如何检查当前 session 是否有该对象?

像这样:

user = User(...)
....
db.session.add(user)
...
if db.session.has_object(user):
    <process further>

这样的事情可能吗?

此外,我想为我的 flask 实例创建 after_request,这样我就不必担心提交,它只允许我检查 db.session 是否准备好提交。如果是则执行 db.session.commit()。

像这样:

@app.after_request
def after_request(response):
    if db.session.is_ready():
        db.session.commit()

最佳答案

您可以检查对象以查看其当前状态。如果它已被添加到 session 中,但尚未刷新到数据库中,它将处于待处理状态,例如:

from sqlalchemy import inspect

u = User(name='Alice')
inspection = inspect(u)
inspection.pending  # False

db.session.add(u)
inspection.pending # True

db.session.commit()
inspection.pending # False

有一点intro to the object states in the docs .

关于python - Flask sqlalchemy 检查 db.session 中的对象是否准备好提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655200/

相关文章:

python - Flask 应用程序中 python 中的相对导入

python - 在换行符上拆分字节变量

python - Django i18n setlang 不更改 session 数据 django_language

python - 如何获取函数输出的多个值

python - Flask session 不持久

python - 已经满足要求-/usr/lib/python3/dist-packages(0.8.0)中的pymysql

python - Flask-SQLAlchemy 查询多对多

python - 将蜘蛛结果保存到数据库

python - 如何使用 SQLalchemy Core 动态连接多个表?

python - 评分系统 - 输入特征