2015-12-01 2 views
0

Я использую updated_at в SQLAlchemy модели класса, как,SQLAlchemy OnUpdate не работает с session.merge()

updated_at = Column(DateTime(timezone=True), nullable=False, default=now, onupdate=now) 

и я обновил ряд этого класса с session.merge()

row = SomeClass(**data) 
session.merge(row) 
session.flush() 

затем я вижу журналы, updated_at не обновляется до now(). он просто обновил только измененные данные в dict.

поэтому я изменил свой код следующим образом.

row = session.query(SomeClass).get(data['id']) 
row.some_column = data['some_column'] 
session.flush() 

после этого колонка updated_at обновляется !! в чем разница между merge() и прямым назначением?

ответ

0

В документации указано, что «С merge() данный экземпляр« источник »не изменяется и не связан с целевым сеансом и остается доступным для объединения с любым количеством других объектов сеанса». sqlalchemy merge documentation

использование session.commit() после merge()

Смежные вопросы