Python中的MySQL批量更新语句

1 投票
2 回答
2310 浏览
提问于 2025-04-16 18:39

我想知道如何使用MySQL和Python进行批量更新。我的需求是这样的:

for x in range(0,100):
NNN = some calculation
ABC = some calculation
query = update XXX set value = NNN, name = ABC where id = x
con.execute(query)

这里的问题是,它执行了100个数据库查询,这让更新过程变得很慢。有没有办法只用一次数据库调用呢?我知道MySQL的批量插入语法,但似乎在update语句中不太适用。

2 个回答

0

根据MySQL更新手册,你可以这样做:

UPDATE tableX SET NNN = calculation, 
   ABC = (SELECT whatever FROM whatevertable WHERE condition) 
 WHERE x >=0 AND x <=100
0

我同意我们可以在查询中进行计算。但是这样做不太灵活,后期维护也比较麻烦。使用MYSQL存储过程是个不错的选择。不过我用Python脚本解决了这个问题,步骤如下:1. 创建了一个临时表,用来存放A、B列和id。Python和MySQL支持批量插入(可以参考petefreitag.com/item/379.cfm)。2. 发出一个简单的更新语句,通过id在条件中更新字段。这样就解决了我的问题。

撰写回答