В запросе UPDATE необработанного SQL есть предложение SET. Он отображается с помощью конструкции update () с использованием порядка столбцов, указанного в исходном объекте Table. Поэтому определенный оператор UPDATE с конкретными столбцами будет отображаться каждый раз одинаково. Поскольку сами параметры передаются методу Update.values () в качестве ключей словаря Python, другого фиксированного порядка нет.
В некоторых случаях порядок параметров, представленных в предложении SET, является значительным. В MySQL предоставление обновлений значений столбцов основано на других значениях столбцов.
Следующий результат заявления —
UPDATE table1 SET x = y + 10, y = 20
будет иметь другой результат, чем —
UPDATE table1 SET y = 20, x = y + 10
Предложение SET в MySQL оценивается для каждого значения, а не для каждого ряда. Для этого используется preserve_parameter_order . Список из двух кортежей Python задается в качестве аргумента метода Update.values () —
stmt = table1.update(preserve_parameter_order = True).\ values([(table1.c.y, 20), (table1.c.x, table1.c.y + 10)])
Объект List похож на словарь за исключением того, что он упорядочен. Это гарантирует, что сначала будет отображаться предложение SET для столбца «y», а затем предложение SET для столбца «x».