問題は、オブジェクトが新しい状態になったときに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
パラメーターが完全に形成されていないため、まだすべての属性値が入力されていないことです。
これを行うためのより良い方法はありますか?ありがとう!