修改表中的所有行

时间:2015-11-06 20:56:32

标签: python sql database sqlite

我正在寻找一种更有效的方法来修改表格中的每一行。该表包含130 000行。每行包含一个名为ico的列,必须以这种方式进行修改:

ico scheme: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()

非常慢(5秒内10行)。我正在寻找一种更有效的方法来修改此表中的每一行。

1 个答案:

答案 0 :(得分:3)

使用纯SQL和一个UPDATE

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

无需使用循环。

您可以更新包含至少一个空格的记录:

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