Utilizzo di più aggiornamenti di tabella

Nel capitolo precedente, abbiamo discusso su come utilizzare più tabelle. Quindi procediamo un passo oltre e impariamomultiple table updates in questo capitolo.

Utilizzando l'oggetto table di SQLAlchemy, è possibile specificare più di una tabella nella clausola WHERE del metodo update (). PostgreSQL e Microsoft SQL Server supportano le istruzioni UPDATE che fanno riferimento a più tabelle. Questo implementa“UPDATE FROM”sintassi, che aggiorna una tabella alla volta. Tuttavia, è possibile fare riferimento direttamente a tabelle aggiuntive in una clausola "FROM" aggiuntiva nella clausola WHERE. Le seguenti righe di codici spiegano il concetto dimultiple table updates chiaramente.

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

L'oggetto update è equivalente alla seguente query UPDATE -

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

Per quanto riguarda il dialetto MySQL, più tabelle possono essere incorporate in una singola istruzione UPDATE separata da una virgola come indicato di seguito:

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

Il codice seguente descrive la query UPDATE risultante:

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

Il dialetto SQLite tuttavia non supporta i criteri di più tabelle all'interno di UPDATE e mostra il seguente errore -

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