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})
。如果您在请求级别请求自动提交,例如,仅在请求结束时提交,而不是在请求期间提交,并且仅在需要时提交--我想您可以检查其本身,并从中进行判断。