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