📜  SQLAlchemy核心-删除多个表

📅  最后修改于: 2020-11-27 07:39:03             🧑  作者: Mango


在本章中,我们将研究“多表删除”表达式,该表达式类似于使用“多表更新”函数。

许多DBMS方言中的DELETE语句的WHERE子句中可以引用多个表。对于PG和MySQL,使用“ DELETE USING”语法。对于SQL Server,使用“ DELETE FROM”表达式表示多个表。通过在WHERE子句中指定多个表,SQLAlchemy delete()构造可隐式支持这两种模式-

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。