我可以使用以下代码在 Python(2.7)上的 Sqlite3 中进行非常有效的批量插入:
cur.executemany("INSERT INTO " + tableName + " VALUES (?, ?, ?, ?);", data)
但我无法获得更新以有效地工作。我认为这可能是数据库结构/索引的问题,但即使在只有一个 100 行的表的测试数据库上,更新仍然需要大约 2-3 秒。
我尝试了不同的代码变体。我拥有的最新代码来自this answer to an previous question about update and executemany,但它对我来说和我所做的任何其他尝试一样慢:
data = []
for s in sources:
source_id = s['source_id']
val = get_value(s['source_attr'])
x=[val, source_id]
data.append(x)
cur.executemany("UPDATE sources SET source_attr = ? WHERE source_id = ?", data)
con.commit()
如何改进此代码以有效地进行大批量更新?