SQLAlchemy onupdate无法使用session.merge()

时间:2015-12-01 04:08:55

标签: python sqlalchemy

我在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()和直接分配之间有什么区别?

1 个答案:

答案 0 :(得分:0)

在文档中定义“使用merge(),给定的”source“实例不会被修改,也不会与目标Session相关联,并且仍然可以与任意数量的其他Session对象合并。” sqlalchemy merge documentation

session.commit()

之后使用merge()