我正在尝试在模型更新后级联更新:
event.listens_for(Task, "after_update")
def propagate_status(mapper, connection, target):
object = target.object
if object.is_finished():
object.status = COMPLETED
问题是我似乎无法将对象状态提交给实际数据库。我可以看出状态确实已设置,因为我有一个附加到 object.status 的监听器。
我尝试在对象上调用 commit() 但结果是:
ResourceClosedError: This transaction is closed
有没有更好的方法来实现这一点?我应该直接使用连接对象吗?
最佳答案
对于那些后来发现这个的人。我能够直接成功使用连接:
@event.listens_for(Task, "after_update")
def propagate_status(mapper, connection, target):
obj_table = Object.__table__
object = target.object
if object.is_finished():
connection.execute(
scan_table.update().
where(object_table.c.id == object.id).
values(status=COMPLETED)
)
如果有更优雅的方式,我完全支持。
关于python - sqlalchemy "after_update"事件后级联更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27025473/