Учебники

Упорядоченные по параметру обновления

В запросе 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».