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!

questionAnswers(2)

yourAnswerToTheQuestion