問題是,我不知道如何使用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
參數沒有完全形成,因此它沒有填充所有的屬性值。
有沒有更好的方法來做到這一點?謝謝!