Python中的MySQL批量更新语句
我想知道如何使用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在条件中更新字段。这样就解决了我的问题。