Verwenden mehrerer Tabellenaktualisierungen

Im vorherigen Kapitel haben wir die Verwendung mehrerer Tabellen erläutert. Also gehen wir noch einen Schritt weiter und lernenmultiple table updates in diesem Kapitel.

Mit dem Tabellenobjekt von SQLAlchemy kann in der WHERE-Klausel der update () -Methode mehr als eine Tabelle angegeben werden. PostgreSQL und Microsoft SQL Server unterstützen UPDATE-Anweisungen, die auf mehrere Tabellen verweisen. Dies implementiert“UPDATE FROM”Syntax, die jeweils eine Tabelle aktualisiert. Auf zusätzliche Tabellen kann jedoch direkt in einer zusätzlichen FROM-Klausel in der WHERE-Klausel verwiesen werden. Die folgenden Codezeilen erläutern das Konzept vonmultiple table updates deutlich.

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

Das Aktualisierungsobjekt entspricht der folgenden UPDATE-Abfrage:

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

In Bezug auf den MySQL-Dialekt können mehrere Tabellen in eine einzelne UPDATE-Anweisung eingebettet werden, die wie unten angegeben durch ein Komma getrennt ist.

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

Der folgende Code zeigt die resultierende UPDATE-Abfrage -

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

SQLite-Dialekt unterstützt jedoch keine Kriterien für mehrere Tabellen in UPDATE und zeigt den folgenden Fehler an:

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