Korzystanie z wielu aktualizacji tabel

W poprzednim rozdziale omówiliśmy sposób korzystania z wielu tabel. Więc idziemy o krok dalej i uczymy sięmultiple table updates w tym rozdziale.

Korzystając z obiektu tabeli SQLAlchemy, można określić więcej niż jedną tabelę w klauzuli WHERE metody update (). PostgreSQL i Microsoft SQL Server obsługują instrukcje UPDATE, które odnoszą się do wielu tabel. To realizuje“UPDATE FROM”składnia, która aktualizuje jedną tabelę naraz. Jednak do dodatkowych tabel można odwoływać się bezpośrednio w dodatkowej klauzuli „FROM” w klauzuli WHERE. Poniższe wiersze kodów wyjaśniają pojęciemultiple table updates Wyraźnie.

stmt = students.update().\
values({
   students.c.name:'xyz',
   addresses.c.email_add:'[email protected]'
}).\
where(students.c.id == addresses.c.id)

Obiekt aktualizacji jest odpowiednikiem następującego zapytania UPDATE -

UPDATE students 
SET email_add = :addresses_email_add, name = :name 
FROM addresses 
WHERE students.id = addresses.id

Jeśli chodzi o dialekt MySQL, wiele tabel można osadzić w jednej instrukcji UPDATE oddzielonej przecinkiem, jak podano poniżej -

stmt = students.update().\
   values(name = 'xyz').\
   where(students.c.id == addresses.c.id)

Poniższy kod przedstawia wynikową kwerendę UPDATE -

'UPDATE students SET name = :name 
FROM addresses 
WHERE students.id = addresses.id'

Jednak dialekt SQLite nie obsługuje kryteriów z wieloma tabelami w ramach UPDATE i wyświetla następujący błąd -

NotImplementedError: This backend does not support multiple-table criteria within UPDATE