При попытке изменить объект, загруженный с помощью SQLAlchemy, объект session.dirty
ведет себя не так, как я ожидал:
o = sqla.session.query(sqla.Game).first()
<sqla.Game at 0x7fdcc1f707b8>
o.wiki
<null>
o.wiki = 'test'
o.wiki
'test'
sqla.session.is_modified(o)
False
sqla.session.dirty
IdentitySet([])
inspect(o).attrs['wiki'].history
History(added=(), unchanged=['test'], deleted=())
Передача этого в базу данных фактически обновляет ее, но мне действительно неясно, почему она помечена как «без изменений». Если я изменю отношение к объекту, оно будет правильно отображаться в «новых» и «удаленных» областях истории. Я загружаю модели через autop, и сеанс не имеет автоматической фиксации.
Я также пытался вручную вызвать flag_modified
и указать столбец напрямую (без автоматического ввода), но безрезультатно.