SQLAlchemy Core - Löschen mehrerer Tabellen

In diesem Kapitel werden wir uns mit dem Ausdruck "Mehrere Tabellen löschen" befassen, der der Verwendung der Funktion "Mehrere Tabellenaktualisierungen" ähnelt.

In vielen DBMS-Dialekten kann in der WHERE-Klausel der DELETE-Anweisung auf mehr als eine Tabelle verwiesen werden. Für PG und MySQL wird die Syntax "DELETE USING" verwendet. und für SQL Server bezieht sich die Verwendung des Ausdrucks "DELETE FROM" auf mehr als eine Tabelle. Die SQLAlchemydelete() Konstrukt unterstützt beide Modi implizit, indem mehrere Tabellen in der WHERE-Klausel wie folgt angegeben werden:

stmt = users.delete().\
   where(users.c.id == addresses.c.id).\
   where(addresses.c.email_address.startswith('xyz%'))
conn.execute(stmt)

In einem PostgreSQL-Backend würde das aus der obigen Anweisung resultierende SQL wie folgt gerendert:

DELETE FROM users USING addresses
WHERE users.id = addresses.id
AND (addresses.email_address LIKE %(email_address_1)s || '%%')

Wenn diese Methode mit einer Datenbank verwendet wird, die dieses Verhalten nicht unterstützt, löst der Compiler NotImplementedError aus.