Estoy usando sqlalchemy como mi orm, y uso declarative
como Base.¿Cómo obtener el valor original de los campos modificados?
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
Mi pregunta es, ¿cómo sé que un usuario ha sido modificado, y cómo obtener los valores originales sin base de datos de consulta de nuevo?
user = Session.query(User).filter_by(id=user_id).first()
# some operations on user
....
# how do I know if the user.name has been changed or not?
...
# How do get the original name?
¡Gracias de antemano!
ACTUALIZACIÓN
He encontrado un método get_history
puede obtener el valor de la historia de un campo, pero no estoy seguro de si es el método correcto para mi propósito.
from sqlalchemy.orm.attributes import get_history
user = Session.query(User).first()
print user.name # 'Jack'
print get_history(user, 'name') # ((),['Jack'],())
user.name = 'Mike'
print get_history(user, 'name') # (['Mike'],(),['Jack'])
Así, podemos comprobar el valor de get_history
, pero ¿es el mejor método?
Creo que 'get_history' es el método correcto. Es una función pública documentada. – aaronasterling