繁体   English   中英

如何在单个查询中发布 Sqlalchemy 中的更新?

[英]How to issue an update in Sqlalchemy in a single query?

我想使用 Sqlalchemy ORM 发出更新语句,但从我看过的所有地方( 官方文档教程点、其他 stackoverflow 答案)这需要:

  • 执行查询以检索 object
  • 对检索到的 object 进行更改
  • 发出提交/刷新

假设我们已经有一个 session object 和一个 Dummy model,结果如下:

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。

先感谢您。

如文档中所述,您可以使用支持 ORM 的 UPDATE 语句

session.execute(update(Dummy).where(Dummy.id == 1).values(name="dumb-dumb"))

这不会发出after_update事件,但您可以为do_orm_execute添加事件侦听器以监视更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM