Actualizaciones ordenadas por parámetros
La consulta UPDATE de SQL sin formato tiene una cláusula SET. Se representa mediante la construcción update () utilizando el orden de columna dado en el objeto Table de origen. Por lo tanto, una instrucción UPDATE particular con columnas particulares se representará de la misma manera cada vez. Dado que los parámetros en sí se pasan al método Update.values () como claves de diccionario de Python, no hay ningún otro orden fijo disponible.
En algunos casos, el orden de los parámetros representados en la cláusula SET es significativo. En MySQL, proporcionar actualizaciones a los valores de columna se basa en el de otros valores de columna.
Resultado de la siguiente declaración:
UPDATE table1 SET x = y + 10, y = 20
tendrá un resultado diferente que -
UPDATE table1 SET y = 20, x = y + 10
La cláusula SET en MySQL se evalúa por valor y no por fila. Para ello, elpreserve_parameter_orderse utiliza. La lista de Python de 2 tuplas se proporciona como argumento a laUpdate.values() método -
stmt = table1.update(preserve_parameter_order = True).\
values([(table1.c.y, 20), (table1.c.x, table1.c.y + 10)])
El objeto List es similar al diccionario, excepto que está ordenado. Esto asegura que la cláusula SET de la columna "y" se renderice primero, luego la cláusula SET de la columna "x".