2011-05-31 70 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