问题是我无法弄清楚当对象进入新状态时如何使用SQLAlchemy通知我.
我正在使用SQLAlchemy ORM(声明性)来更新对象:
class Customer(declarative_base()):
__table_name__ = "customer"
id = Column(Integer, primary_key=True)
status = Column(String)
Run Code Online (Sandbox Code Playgroud)
我想知道一个物体进入状态的时间.特别是在发布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)
Run Code Online (Sandbox Code Playgroud)
我的代码触发每一次"设置"被称为该属性,我检查value和oldvalue是不同的.问题是target参数未完全形成,因此它尚未填充所有属性值.
有一个更好的方法吗?谢谢!