问题是我不知道如何使用 SQLAlchemy 在对象进入新状态时通知我。
我正在使用 SQLAlchemy ORM (Declarative) 来更新一个对象:
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)
每次在该属性上调用“set”时,我的代码都会触发,并且我会检查 thevalue
和 theoldvalue
是否不同。问题是target
参数没有完全形成,所以它还没有填充所有的属性值。
有一个更好的方法吗?谢谢!