SQLAlchemy Core - 多表删除
在本章中,我们将研究多表删除表达式,它类似于使用多表更新函数。
在许多 DBMS 方言中,DELETE 语句的 WHERE 子句中可以引用多个表。对于 PG 和 MySQL,使用"DELETE USING"语法;对于 SQL Server,使用"DELETE FROM"表达式引用多个表。 SQLAlchemy delete() 构造隐式支持这两种模式,通过在 WHERE 子句中指定多个表,如下所示 −
stmt = users.delete().\ where(users.c.id == addresss.c.id)..\ where(addresses.c.email_address.startswith('xyz%')) conn.execute(stmt)
在 PostgreSQL 后端,上述语句生成的 SQL 将呈现为 −
DELETE FROM users USING address WHERE users.id = address.id AND (addresses.email_address LIKE %(email_address_1)s || '%%')
如果此方法与不支持此方法的数据库一起使用行为,编译器将引发 NotImplementedError。