使用Python脚本更新MySQL表

时间:2017-03-24 18:04:26

标签: python mysql

我还在学习python,我在使用SQL查询

我有一个名为diverts

的简单表格

第1列称为chute 第2列称为five

滑槽是主键,包含Fa01Fa60

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

我的脚本中有一个名为fiveMin的值列表,其中包含与该滑槽相关的特定事件在五分钟内发生的次数。我从其他地方提取这些数据并填充列表。 fiveMin = [1.0, 23.0, 56.0, .... 39.0, 56.0]所有

中的60个元素

我希望使用该数据更新five列,并且每隔五分钟更新一次,新数据不会附加。

我使用以下

成功更新了五列
cursor.executemany('INSERT INTO `ship_diverts` (five) VALUES (%s),(%s),(%s)',
[(item, item, item) for item in fiveMin])

但这只是将数据添加到five列,我想根据主键更新每一列

 | chute | five |
 |-------|------|
 | Fa01  | 1.0  |
 |-------|------|
 | Fa02  | 23.0 |
 |-------|------|
 | Fa03  | 56.0 |
 |-------|------|

我不知道如何实现这一点,有什么建议吗?

我还有chute_list = ['Fa01', 'Fa02', .... 'Fa60'],我可以将其传递给主键的查询。

1 个答案:

答案 0 :(得分:1)

你必须使用mysql更新语句。它看起来像这样:

UPDATE diverts
SET column1=value, column2=value2,...
WHERE chute=some_value 

你可以通过先选择所有主键,将它们放在一个数组中然后添加你想要的任何值来构建一个对象。 。但这是一般的想法。

还有一个名为insert on duplicate key update的语句(如果列存在则会更新,如果不存在则会生成新列)。

执行许多:

data = [
( 'Jane', date(2005, 2, 12) , 1),
( 'Joe', date(2006, 5, 23) , 2),
( 'John', date(2010, 10, 3) , 3),
]
stmt = "update employees set first_name = %s, hire_date = %s where id=%s"
cursor.executemany(stmt, data)

 execute:


items = [
( 'Jane', date(2005, 2, 12) , 1),
( 'Joe', date(2006, 5, 23) , 2),
( 'John', date(2010, 10, 3) , 3),
]
stmt = "update employees set first_name = %s, hire_date = %s where id=%s"
for item in items 
    cursor.execute(stmt, item)