В этой главе мы рассмотрим выражение для удаления нескольких таблиц, которое похоже на использование функции обновления нескольких таблиц.
На многих диалектах СУБД в предложении WHERE оператора DELETE можно ссылаться более чем на одну таблицу. Для 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.