Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask sqlalchemy检查db.session中的对象是否已准备好提交_Python_Flask_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

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

Python Flask sqlalchemy检查db.session中的对象是否已准备好提交,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,我有新创建的对象。我想知道如何检查当前会话是否有该对象 大概是这样的: user = User(...) .... db.session.add(user) ... if db.session.has_object(user): <process further> @app.after_request def after_request(response): if db.session.is_ready(): db.session.commit()

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

大概是这样的:

user = User(...)
....
db.session.add(user)
...
if db.session.has_object(user):
    <process further>
@app.after_request
def after_request(response):
    if db.session.is_ready():
        db.session.commit()

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

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

有一点

谢谢@Doobeh。这有助于检查对象是否处于会话中。但我如何决定提交是否准备就绪?何时动态刷新?如果您询问如何启用自动提交,那只是设置会话()时的
autocommit=True
,或者如果您使用Flask-SQLAlchemy,则是
db=SQLAlchemy(会话选项={autocommit':True})
。如果您在请求级别请求自动提交,例如,仅在请求结束时提交,而不是在请求期间提交,并且仅在需要时提交--我想您可以检查其本身,并从中进行判断。