问题是,我不知道如何使用SQLAlchemy来通知我什么时候一个对象进入一个新的状态。如何在数据库更新后获取SQLAlchemy ORM对象的先前状态?
我使用SQLAlchemy的ORM(声明)来更新对象:
class Customer(declarative_base()):
__table_name__ = "customer"
id = Column(Integer, primary_key=True)
status = Column(String)
我想知道当一个物体进入状态。特别是在UPDATE已经发布和状态改变之后。例如。 Customer.status == 'registered'
它以前有不同的状态。
我目前做这与'set'
属性事件:
from sqlalchemy import event
from model import Customer
def on_set_attribute(target, value, oldvalue, initiator):
print target.status
print value
print oldvalue
event.listen(
Customer.status,
'set',
on_set_attribute,
propagate=True,
active_history=True)
我的代码触发每一次“设置”被称为该属性,我检查value
和oldvalue
是不同的。问题是target
参数没有完全形成,因此它没有填充所有的属性值。
有没有更好的方法来做到这一点?谢谢!