SQLAlchemy Core - wiele usuwania tabel

W tym rozdziale przyjrzymy się wyrażeniu Multiple Table Deletes, które jest podobne do funkcji Multiple Table Updates.

W klauzuli WHERE instrukcji DELETE w wielu dialektach DBMS można odwoływać się do więcej niż jednej tabeli. W przypadku PG i MySQL używana jest składnia „DELETE USING”; aw przypadku programu SQL Server wyrażenie „USUŃ Z” odnosi się do więcej niż jednej tabeli. SQLAlchemydelete() Konstrukcja obsługuje oba te tryby niejawnie, określając wiele tabel w klauzuli WHERE w następujący sposób -

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

Na zapleczu PostgreSQL wynikowy kod SQL z powyższej instrukcji byłby renderowany jako -

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

Jeśli ta metoda jest używana z bazą danych, która nie obsługuje tego zachowania, kompilator zgłosi błąd NotImplementedError.