SQLAlchemy Core - Suppression de plusieurs tables

Dans ce chapitre, nous examinerons l'expression de suppressions de tables multiples qui est similaire à l'utilisation de la fonction Mises à jour de tables multiples.

Plusieurs tables peuvent être référencées dans la clause WHERE de l'instruction DELETE dans de nombreux dialectes de SGBD. Pour PG et MySQL, la syntaxe «DELETE USING» est utilisée; et pour SQL Server, l'utilisation de l'expression «DELETE FROM» fait référence à plusieurs tables. L'alchimie SQLdelete() construct prend en charge ces deux modes implicitement, en spécifiant plusieurs tables dans la clause WHERE comme suit -

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

Sur un backend PostgreSQL, le SQL résultant de l'instruction ci-dessus serait rendu comme -

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

Si cette méthode est utilisée avec une base de données qui ne prend pas en charge ce comportement, le compilateur lèvera NotImplementedError.