SQLAlchemy教程

SQLAlchemy 更新

原始 SQL 的 UPDATE 查询具有 SET 子句。它由 update() 构造使用原始 Table 对象中给出的列顺序呈现。因此,具有特定列的特定 UPDATE 语句每次将呈现相同。由于参数本身作为 Python 字典键传递给 Update.values() 方法,因此没有其他可用的固定顺序。
在某些情况下,SET 子句中呈现的参数顺序很重要。在 MySQL 中,对列值的更新是基于其他列值的更新。
以下语句的结果-
UPDATE table1 SET x = y + 10, y = 20
将产生与-不同的结果
UPDATE table1 SET y = 20, x = y + 10
MySQL 中的 SET 子句是基于每个值而不是基于每行评估的。为此,使用 preserve_parameter_order。 2 元组的 Python 列表作为 Update.values() 方法的参数-
stmt = table1.update(preserve_parameter_order = true).\
   values([(table1.c.y, 20), (table1.c.x, table1.c.y + 10)])
List 对象与字典类似,只是它是有序的。这确保了"y"列的 SET 子句将首先呈现,然后是"x"列的 SET 子句。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4