[英]How to issue an update in Sqlalchemy in a single query?
我想使用 Sqlalchemy ORM 发出更新语句,但从我看过的所有地方( 官方文档、 教程点、其他 stackoverflow 答案)这需要:
假设我们已经有一个 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.