【问题标题】:SQLAlchemy onupdate is not working with session.merge()SQLAlchemy onupdate 不适用于 session.merge()
【发布时间】:2015-12-01 13:58:15
【问题描述】:

我在 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()。它只是更新了字典中的更改数据。

所以我像这样更改了我的代码。

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

然后更新updated_at 列! merge() 和直接分配有什么区别?

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

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

    merge()之后使用session.commit()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2015-11-17
      • 2023-03-17
      相关资源
      最近更新 更多