Jak mogę uzyskać poprzedni stan obiektu SQLAlchemy ORM po aktualizacji db?
Problem polega na tym, że nie mogę dowiedzieć się, jak używać SQLAlchemy do powiadamiania mnie, gdy obiekt przechodzi w nowy stan.
Używam SQLAlchemy ORM (deklaratywny) do aktualizacji obiektu:
class Customer(declarative_base()):
__table_name__ = "customer"
id = Column(Integer, primary_key=True)
status = Column(String)
Chcę wiedzieć, kiedy obiekt wchodzi w stan. Szczególnie po wydaniu AKTUALIZACJI i zmianie stanu. Na przykład.Customer.status == 'registered'
a wcześniej miał inny stan.
Obecnie robię to za pomocą'set'
zdarzenie atrybutu:
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)
Mój kod odpala za każdym razem, gdy w tym atrybucie wywoływany jest „set” i sprawdzam, czyvalue
ioldvalue
są różne. Problem polega na tym, żetarget
parametr nie jest w pełni ukształtowany, więc nie ma jeszcze wszystkich wartości atrybutów.
Czy jest lepszy sposób, aby to zrobić? Dzięki!