- SQLAlchemy 教程
- SQLAlchemy - 主頁
- SQLAlchemy - 介紹
- SQLAlchemy Core
- 表示式語言
- 連線到資料庫
- 建立表
- SQL 表示式
- 執行表示式
- 選擇行
- 使用文字 SQL
- 使用別名
- 使用 UPDATE 表示式
- 使用 DELETE 表示式
- 使用多張表
- 使用多表更新
- 按引數順序進行更新
- 多表刪除
- 使用連線
- 使用連線詞
- 使用函式
- 使用集合運算
- SQLAlchemy ORM
- 宣告對映
- 建立會話
- 新增物件
- 使用查詢
- 更新物件
- 應用過濾器
- 過濾器運算子
- 返回列表和標量
- 文字 SQL
- 建立關係
- 使用相關物件
- 使用連線
- 通用關係運算符
- 急切載入
- 刪除相關物件
- 多對多關係
- 方言
- SQLAlchemy 有用資源
- SQLAlchemy - 快速指南
- 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 查詢 −
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
廣告