在sql查询中循环压缩变量列表

时间:2017-03-25 10:04:49

标签: python mysql list nested

我有一个我想要更新的表,column1是主键

| chute | five |
|-------|------|
| Fa01  | null |
|-------|------|
| Fa02  | null |
|-------|------|
| Fa03  | null |
|-------|------|

我想根据第1列中的键更新第2列数据列表。

sort_list = [('10.0','Fa01'),('23.0','Fa02'),('35.0','Fa03'),('9.0','Fa04')]

query = "UPDATE ship_divert SET five = %s, WHERE chute = %s"
cursor.executemany(query,sort_list)

但是当我运行包含此查询的函数时,我收到以下错误

'...for the right syntax to use near 'WHERE chute = 'Fa01''

我已经在我的mysql控制台上测试了没有变量的查询,它可以正常工作

UPDATE ship_divert   
SET five='28.0'  
WHERE chute = 'Fa02'

我的脚本中的语法不正确?

2 个答案:

答案 0 :(得分:3)

您需要删除sql中的,

query = "UPDATE ship_divert SET five = %s, WHERE chute = %s"
                                         ^

答案 1 :(得分:0)

使用此查询,您可以在一个查询中执行此操作。这会快得多。在示例中,我只有3个值。

INSERT INTO ship_divert (chute,five)
VALUES (
    ('Fa01','10.0'),
    ('Fa02','23.0'),
    ('Fa03','35.0'),
) ON DUPLICATE KEY UPDATE five=VALUES(five);