我有新创建的对象。我想知道如何检查当前会话是否有该对象?
这样的事情:
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()
答案 0 :(得分:6)
您可以检查对象以查看其当前状态。如果它已添加到会话中但尚未刷新到数据库,则它将处于挂起状态,例如:
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