Mises à jour par paramètres

La requête UPDATE du SQL brut a la clause SET. Il est rendu par la construction update () en utilisant l'ordre des colonnes donné dans l'objet Table d'origine. Par conséquent, une instruction UPDATE particulière avec des colonnes particulières sera rendue identique à chaque fois. Étant donné que les paramètres eux-mêmes sont passés à la méthode Update.values ​​() en tant que clés de dictionnaire Python, il n'y a pas d'autre ordre fixe disponible.

Dans certains cas, l'ordre des paramètres rendus dans la clause SET est significatif. Dans MySQL, la mise à jour des valeurs de colonne est basée sur celle des autres valeurs de colonne.

Résultat de la déclaration suivante -

UPDATE table1 SET x = y + 10, y = 20

aura un résultat différent de -

UPDATE table1 SET y = 20, x = y + 10

La clause SET dans MySQL est évaluée par valeur et non par ligne. A cet effet, lepreserve_parameter_orderest utilisé. La liste Python de 2-tuples est donnée comme argument duUpdate.values() méthode -

stmt = table1.update(preserve_parameter_order = True).\
   values([(table1.c.y, 20), (table1.c.x, table1.c.y + 10)])

L'objet List est similaire au dictionnaire sauf qu'il est ordonné. Cela garantit que la clause SET de la colonne «y» sera rendue en premier, puis la clause SET de la colonne «x».