Sqlalchemy-core-multiple-table-deletes
提供:Dev Guides
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を発生させます。