여러 테이블 업데이트 사용
이전 장에서 여러 테이블을 사용하는 방법에 대해 논의했습니다. 그래서 우리는 한 단계 더 나아가서multiple table updates 이 챕터에서는.
SQLAlchemy의 테이블 객체를 사용하면 update () 메서드의 WHERE 절에 둘 이상의 테이블을 지정할 수 있습니다. PostgreSQL 및 Microsoft SQL Server는 여러 테이블을 참조하는 UPDATE 문을 지원합니다. 이것은 구현“UPDATE FROM”한 번에 하나의 테이블을 업데이트하는 구문. 그러나 추가 테이블은 WHERE 절의 추가“FROM”절에서 직접 참조 할 수 있습니다. 다음 코드 줄은 개념을 설명합니다.multiple table updates 분명히.
stmt = students.update().\
values({
students.c.name:'xyz',
addresses.c.email_add:'[email protected]'
}).\
where(students.c.id == addresses.c.id)
업데이트 객체는 다음 UPDATE 쿼리와 동일합니다-
UPDATE students
SET email_add = :addresses_email_add, name = :name
FROM addresses
WHERE students.id = addresses.id
MySQL 방언에 관한 한, 아래에 주어진 것처럼 쉼표로 구분 된 단일 UPDATE 문에 여러 테이블을 포함 할 수 있습니다.
stmt = students.update().\
values(name = 'xyz').\
where(students.c.id == addresses.c.id)
다음 코드는 결과 UPDATE 쿼리를 묘사합니다-
'UPDATE students SET name = :name
FROM addresses
WHERE students.id = addresses.id'
그러나 SQLite 방언은 UPDATE 내에서 다중 테이블 기준을 지원하지 않으며 다음 오류를 표시합니다.
NotImplementedError: This backend does not support multiple-table criteria within UPDATE