Aggiornamenti ordinati per parametro

La query UPDATE di SQL raw ha la clausola SET. Viene visualizzato dal costrutto update () usando l'ordine delle colonne fornito nell'oggetto Table di origine. Pertanto, una particolare istruzione UPDATE con colonne particolari verrà renderizzata ogni volta lo stesso. Poiché i parametri stessi vengono passati al metodo Update.values ​​() come chiavi del dizionario Python, non sono disponibili altri ordini fissi.

In alcuni casi, l'ordine dei parametri visualizzati nella clausola SET è significativo. In MySQL, la fornitura di aggiornamenti ai valori di colonna si basa su quella di altri valori di colonna.

Dopo il risultato della dichiarazione -

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

avrà un risultato diverso da -

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

La clausola SET in MySQL viene valutata in base al valore e non in base alla riga. A tal fine, ilpreserve_parameter_ordersi usa. L'elenco Python di 2 tuple viene fornito come argomento del fileUpdate.values() metodo -

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

L'oggetto List è simile al dizionario tranne per il fatto che è ordinato. Ciò garantisce che la clausola SET della colonna "y" venga visualizzata per prima, quindi la clausola SET della colonna "x".