【发布时间】:2021-10-18 06:00:24
【问题描述】:
我想使用 Sqlalchemy ORM 来发出更新语句,但从我所看过的所有地方(official docs、tutorials point、其他 stackoverflow 答案)这需要:
- 执行查询以检索对象
- 对检索到的对象进行更改
- 发出提交/刷新
假设我们已经有一个会话对象和一个 Dummy 模型,这会产生如下结果:
dummy = session.query(Dummy).filter(Dummy.id == 1).first()
dummy.name = "dumb-dumb"
session.commit()
这不会导致对数据库的两次调用吗?如果是这样,我可以执行以下操作以将其减少为单个调用:
session.query(Dummy).filter(Dummy.id == 1).update({"name": "dumb-dumb"})
session.commit()
第二个代码块会更高效,还是没有任何区别?
我考虑过使用 Sqlalchmey 核心,因为我知道如何构造语句,但我还需要在插入或更新后创建一些侦听器,这需要使用 ORM。
提前谢谢你。
【问题讨论】:
标签: python python-3.x sqlalchemy