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。

廣告
© . All rights reserved.