我还在学习python,我在使用SQL查询
我有一个名为diverts
第1列称为chute
第2列称为five
滑槽是主键,包含Fa01
到Fa60
| chute | five |
|-------|------|
| Fa01 | null |
|-------|------|
| Fa02 | null |
|-------|------|
| Fa03 | null |
|-------|------|
我的脚本中有一个名为fiveMin
的值列表,其中包含与该滑槽相关的特定事件在五分钟内发生的次数。我从其他地方提取这些数据并填充列表。 fiveMin = [1.0, 23.0, 56.0, .... 39.0, 56.0]
所有
我希望使用该数据更新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']
,我可以将其传递给主键的查询。
答案 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)