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