Я использую sqlalchemy в качестве своего орма и использую declarative
как Base.Как получить исходное значение измененных полей?
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
Мой вопрос, как я знаю, пользователь был изменен, и как получить исходные значения без базы данных запроса снова?
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?
Заранее благодарен!
UPDATE
Я нашел метод get_history
может получить значение истории поля, но я не уверен, что это правильный метод для моей цели.
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'])
Таким образом, мы можем проверить значение get_history
, но это лучший способ?
Я думаю, что 'get_history' - правильный метод. Это зарегистрированная публичная функция. – aaronasterling