更新表中的所有行 - 太慢了

时间:2015-11-17 12:05:59

标签: python sql database sqlite

我尝试使用csv文件上传表格中的所有行。 csv文件中有' ic_dph',' psc',' name',' mesto' ...等字段我想将缺少的记录添加到数据库中。

with open('phs.csv') as f:
    for line in f:
        i+=1
        line = line.strip('\n').decode('cp1250')
        splt = line.split(';')

        if len(splt)==6:
            cur.execute(u"""UPDATE companies SET ic_dph=?,mesto=?,ulica_cislo=?,psc=? WHERE nazov=?""",(splt[0],splt[2],splt[4],splt[3],splt[1]))
        if i%50==0: print i
    conn.commit()

此代码可以正常工作,但它非常有效(几秒钟内有50条记录)。

您有什么想法可以提高更新速度吗?

编辑:根据Gordon Linoff的评论,我已将数据加载到表中并尝试以这种方式更新。但是SqliteStudio说在SQL命令的某个地方有一个错误。

UPDATE companies SET companies.ic_dph = financna_sprava.ic_dph, companies.mesto = financna_sprava.mesto, companies.ulica_cislo = financna_sprava.ulica_cislo, companies.psc=financna_sprava.psc WHERE companies.nazov = financna_sprava.nazov

1 个答案:

答案 0 :(得分:0)

Sqlite不支持JOIN中的UPDATE,所以使用子查询

server_number = 1;    

ProcessBuilder pb = new ProcessBuilder("./connectvpn.sh", server_number);
Process proc = pb.start();