【发布时间】:2013-03-16 13:21:06
【问题描述】:
问题是我不知道如何使用 SQLAlchemy 在对象进入新状态时通知我。
我正在使用 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)
每次在该属性上调用“set”时,我的代码都会触发,我检查value 和oldvalue 是否不同。问题是target 参数没有完全形成,所以它还没有填充所有的属性值。
有没有更好的方法来做到这一点?谢谢!
【问题讨论】:
标签: python orm sqlalchemy crud