SQLAlchemy教程

SQLAlchemy 多个表更新

在上一章中,我们讨论了如何使用多个表。所以我们更进一步,在本章中学习 多表更新
使用 SQLAlchemy 的 table 对象,可以在 update() 方法的 WHERE 子句中指定多个表。 PostgreSQL 和 Microsoft SQL Server 支持引用多个表的 UPDATE 语句。这实现了 "UPDATE FROM" 语法,它一次更新一个表。但是,可以直接在 WHERE 子句中的附加"FROM"子句中引用其他表。下面几行代码清楚地解释了 多表更新的概念。
stmt = students.update().\
values({
   students.c.name:'xyz',
   addresses.c.email_add:'abc@xyz.com'
}).\
where(students.c.id == addresses.c.id)
更新对象相当于下面的 UPDATE 查询-
UPDATE students 
SET email_add = :addresses_email_add, name = :name 
FROM addresses 
WHERE students.id = addresses.id
就 MySQL 方言而言,可以将多个表嵌入到由逗号分隔的单个 UPDATE 语句中,如下所示-
stmt = students.update().\
   values(name = 'xyz').\
   where(students.c.id == addresses.c.id)
以下代码描述了由此产生的 UPDATE 查询-
'UPDATE students SET name = :name 
FROM addresses 
WHERE students.id = addresses.id'
SQLite 方言在 UPDATE 中不支持多表条件并显示以下错误-
NotImplementedError: this backend does not support multiple-table criteria within UPDATE
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4