- SQLAlchemy 教程
- SQLAlchemy - 主頁
- SQLAlchemy - 簡介
- SQLAlchemy 核心
- 表示式語言
- 連線至資料庫
- 建立表
- SQL 表示式
- 執行表示式
- 選擇行
- 使用文字 SQL
- 使用別名
- 使用 UPDATE 表示式
- 使用 DELETE 表示式
- 使用多表
- 使用多表更新
- 按引數順序更新
- 多表刪除
- 使用聯接
- 使用連詞
- 使用函式
- 使用集合運算
- SQLAlchemy ORM
- 宣告對映
- 建立會話
- 新增物件
- 使用查詢
- 更新物件
- 應用篩選器
- 篩選器運算子
- 返回列表和標量
- 文字 SQL
- 構建關係
- 使用相關物件
- 使用聯接
- 通用關係運算符
- 熱切載入
- 刪除相關物件
- 多對多關係
- 方言
- SQLAlchemy 有用資源
- SQLAlchemy - 快速指南
- SQLAlchemy - 有用資源
- SQLAlchemy - 討論
SQLAlchemy 核心 - 多表刪除
在本章中,我們將瞭解多表刪除表示式,它類似於使用多表更新函式。
在很多 DBMS 方言中,DELETE 語句的 WHERE 子句中可以引用多張表。對於 PG 和 MySQL,使用“DELETE USING”語法;而對於 SQL Server,使用“DELETE FROM”表示式可以引用多張表。SQLAlchemy delete() 建構函式透過在 WHERE 子句中指定多張表來隱式支援這兩種模式,如下所示 -
stmt = users.delete().\
where(users.c.id == addresses.c.id).\
where(addresses.c.email_address.startswith('xyz%'))
conn.execute(stmt)
在 PostgreSQL 後端,上述語句中產生的 SQL 將渲染為 -
DELETE FROM users USING addresses WHERE users.id = addresses.id AND (addresses.email_address LIKE %(email_address_1)s || '%%')
如果將此方法用於不支援此行為的資料庫,編譯器將引發 NotImplementedError。
廣告