Utilisation de plusieurs mises à jour de table

Dans le chapitre précédent, nous avons expliqué comment utiliser plusieurs tables. Nous allons donc plus loin et apprenonsmultiple table updates dans ce chapitre.

En utilisant l'objet table de SQLAlchemy, plusieurs tables peuvent être spécifiées dans la clause WHERE de la méthode update (). PostgreSQL et Microsoft SQL Server prennent en charge les instructions UPDATE qui font référence à plusieurs tables. Cela met en œuvre“UPDATE FROM”syntaxe, qui met à jour une table à la fois. Cependant, des tables supplémentaires peuvent être référencées directement dans une clause «FROM» supplémentaire dans la clause WHERE. Les lignes de codes suivantes expliquent le concept demultiple table updates clairement.

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

L'objet de mise à jour est équivalent à la requête UPDATE suivante -

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

En ce qui concerne le dialecte MySQL, plusieurs tables peuvent être intégrées dans une seule instruction UPDATE séparée par une virgule comme indiqué ci-dessous -

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

Le code suivant décrit la requête UPDATE résultante -

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

Cependant, le dialecte SQLite ne prend pas en charge les critères de plusieurs tables dans UPDATE et affiche l'erreur suivante -

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