2015-11-06 45 views
1

我正在尋找更有效的方法來修改表中的每一行。該表包含130 000行。每一行包含一個稱爲ico列其必須修改這種方式:修改表中的所有行

ICO方案:xx xxx xxx

修改:ico = ico.replace(' ','')

所以ICO從xx xxx xxx變更爲xxxxxxxx

我試圖這樣:

icos = [x[0] for x in cur.execute("""SELECT ico FROM companies""").fetchall()] 
for ico in icos: 
    print ico 
    new_ico = ico.replace(' ','') 
    cur.execute("""UPDATE companies SET ico=? WHERE ico=?""",(new_ico,ico)) 
conn.commit() 

這是非常慢(10行中5秒)。我正在尋找一種更有效的方法來修改此表中的每一行。

回答

3

使用純SQL和一個UPDATE

UPDATE companies 
SET ico = REPLACE(ico, ' ', ''); 

沒有必要使用循環。

您可以更新記錄,其中包含至少一個空格:

UPDATE companies 
SET ico = REPLACE(ico, ' ', '') 
WHERE ico LIKE '% %'; 
+1

@GordonLinoff好一點。 – lad2025