¿Cómo puedo obtener el estado anterior de un objeto ORM de SQLAlchemy después de una actualización de db?

El problema es que no puedo averiguar cómo usar SQLAlchemy para notificarme cuando un objeto entra en un nuevo estado.

Estoy usando SQLAlchemy ORM (Declarativo) para actualizar un objeto:

class Customer(declarative_base()):

    __table_name__ = "customer"

    id = Column(Integer, primary_key=True)
    status = Column(String)

Quiero saber cuando un objeto entra en un estado. Particularmente después de que se haya emitido una ACTUALIZACIÓN y cuando el estado cambia. P.ej.Customer.status == 'registered' y anteriormente tenía un estado diferente.

Actualmente estoy haciendo esto con un'set' evento de atributo:

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)

Mi código se activa cada vez que se llama 'set' en ese atributo, y verifico sivalue y eloldvalue son diferentes. El problema es que latarget el parámetro no está completamente formado, por lo que aún no tiene todos los valores de atributo rellenados.

¿Hay una mejor manera de hacer esto? ¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta