我知道executemany可以用来方便地将新条目添加到数据库中;与for循环中的单个执行相比,减少
Python方法调用开销很有用.但是,我想知道这是否适用于SQLite的UPDATE.
更具体地说,请考虑以下设置:
cnx = sqlite3.connect(DATABASE)
c = cnx.cursor()
for path in paths:
for data in some_computation(path):
c.execute("UPDATE TABLENAME SET cont=? WHERE id=?",(data[1],data[0]))
cnx.commit()
cnx.close()
我甚至不确定下面的方法是否会更快(必须对它进行基准测试),但问题是它不起作用,因为我做错了我假设.有关在下面的代码片段中使用executemany来完成我上面发布的任务的提示吗?
cnx = sqlite3.connect(DATABASE)
c = cnx.cursor()
for path in paths:
data_ids,data_conts = [],[]
for data in some_computation(path):
if len(data_ids) >= CHUNKSIZE:
c.executemany("UPDATE TABLENAME SET cont=? WHERE id=?",(data_conts,data_ids))
cnx.commit()
data_ids,[]
data_ids.append(data[0])
data_conts.ap