我正在寻找一种更有效的方法来修改表格中的每一行。该表包含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行)。我正在寻找一种更有效的方法来修改此表中的每一行。
答案 0 :(得分:3)
使用纯SQL
和一个UPDATE
:
UPDATE companies
SET ico = REPLACE(ico, ' ', '');
无需使用循环。
您可以更新包含至少一个空格的记录:
UPDATE companies
SET ico = REPLACE(ico, ' ', '')
WHERE ico LIKE '% %';