Parameter-geordnete Updates

Die UPDATE-Abfrage von Raw SQL hat die SET-Klausel. Es wird vom Konstrukt update () unter Verwendung der im ursprünglichen Tabellenobjekt angegebenen Spaltenreihenfolge gerendert. Daher wird eine bestimmte UPDATE-Anweisung mit bestimmten Spalten jedes Mal gleich gerendert. Da die Parameter selbst als Python-Wörterbuchschlüssel an die Update.values ​​() -Methode übergeben werden, ist keine andere feste Reihenfolge verfügbar.

In einigen Fällen ist die Reihenfolge der in der SET-Klausel wiedergegebenen Parameter von Bedeutung. In MySQL basiert die Bereitstellung von Aktualisierungen für Spaltenwerte auf denen anderer Spaltenwerte.

Ergebnis der folgenden Aussage -

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

wird ein anderes Ergebnis haben als -

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

Die SET-Klausel in MySQL wird pro Wert und nicht pro Zeile ausgewertet. Zu diesem Zweck wird diepreserve_parameter_orderwird eingesetzt. Die Python-Liste der 2-Tupel wird als Argument für die angegebenUpdate.values() Methode -

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

Das List-Objekt ähnelt dem Dictionary, ist jedoch geordnet. Dadurch wird sichergestellt, dass zuerst die SET-Klausel der Spalte „y“ und dann die SET-Klausel der Spalte „x“ gerendert wird.