SQLAlchemy Core-다중 테이블 삭제

이 장에서는 Multiple Table Updates 기능을 사용하는 것과 유사한 Multiple Table Deletes 표현식을 살펴 보겠습니다.

많은 DBMS 언어에서 DELETE 문의 WHERE 절에서 하나 이상의 테이블을 참조 할 수 있습니다. PG 및 MySQL의 경우 "DELETE USING"구문이 사용됩니다. SQL Server의 경우 "DELETE FROM"식을 사용하면 둘 이상의 테이블을 참조합니다. SQLAlchemydelete() 구문은 다음과 같이 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를 발생시킵니다.