2011-05-31 68 views
0

我想知道如何使用MySQL和Python进行批量更新。我的要求是一样Python中的MySQL批量更新语句

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声明不起作用。

+0

它是一些数学计算使用python例如ABC =(200 * 2.5)/ 22和NNN = ABC * 100/10种 – 2011-05-31 05:24:02

+0

它们应该很容易转换为SQL计算。 – Rasika 2011-05-31 05:43:59

回答

0

我同意我们可以做的查询计算。但对于变更和维护并不灵活。去MYSQL存储过程是一个不错的选择。但我已经通过以下步骤在python脚本中解决了它。 1.创建一个临时表来保存列A,B和ID。 Python & MySQL支持批量插入(请参阅petefreitag.com/item/379.cfm)。 2.发出一个简单的更新语句来更新在where条件中使用id的字段。这就解决了我的问题

0

按照MySQL update manual,你可以做

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

这个计算有点复杂,它不能在mysql语句本身完成。 NNN和ABC计算也是相互依赖的 – 2011-05-31 05:27:56

+0

在这两种情况下,您仍然可以将其压缩到单个查询中。如果你提供更多的细节,我们可能会提供帮助。我在单个查询上完成了复杂的相互依赖的更新,大大提高了应用程序的效率。 – Rasika 2011-05-31 05:32:38

+0

我有一个查询,如'select id,value1,value2 from TABLEA' result = cursor.fetchall(): 结果中的行: X =计数(取决于其他选择语句和其他值)和Y = X +(来自其他select语句和计算的值) update TABLEB set A = X,B = Y其中id = row ['id'] – 2011-05-31 05:37:44