Как я могу получить предыдущее состояние объекта SQLAlchemy ORM после обновления БД?
Проблема в том, что я не могу понять, как использовать SQLAlchemy, чтобы уведомить меня, когда объект переходит в новое состояние.
Я использую SQLAlchemy ORM (декларативный) для обновления объекта:
class Customer(declarative_base()):
__table_name__ = "customer"
id = Column(Integer, primary_key=True)
status = Column(String)
Я хочу знать, когда объект входит в состояние. Особенно после выпуска ОБНОВЛЕНИЯ и изменения состояния. Например.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
Параметр сформирован не полностью, поэтому еще не заполнены все значения атрибутов.
Есть лучший способ сделать это? Спасибо!