我在SQLAlchemy模型类中使用updated_at
,如
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 :(得分:0)
在文档中定义“使用merge(),给定的”source“实例不会被修改,也不会与目标Session相关联,并且仍然可以与任意数量的其他Session对象合并。” sqlalchemy merge documentation
在session.commit()
merge()