Ich verwende Sqlalchemy als meine Orm, und declarative
als Base verwenden.Wie erhalte ich den ursprünglichen Wert der geänderten Felder?
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
Meine Frage ist, wie kann ich weiß ein Benutzer geändert wurde, und wie man wieder die ursprünglichen Werte ohne Abfrage Datenbank zu bekommen?
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?
Vielen Dank im Voraus!
UPDATE
fand ich eine Methode get_history
kann die Geschichte Wert eines Feldes, aber ich bin mir nicht sicher, ob es die richtige Methode für meine Zwecke ist.
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'])
So können wir den Wert von get_history
, überprüfen aber es ist die beste Methode?
Ich denke 'get_history' ist die richtige Methode. Es ist eine dokumentierte öffentliche Funktion. – aaronasterling