Я могу делать очень эффективные массовые вставки в Sqlite3 на Python (2.7) с помощью этого кода:
cur.executemany("INSERT INTO " + tableName + " VALUES (?, ?, ?, ?);", data)
Но я не могу заставить обновления работать эффективно. Я думал, что это может быть проблема структуры/индексации базы данных, но даже в тестовой базе данных только с одной таблицей из 100 строк обновление все еще занимает около 2-3 секунд.
Я пробовал разные варианты кода. Последний код, который у меня есть, взят из этот ответ на предыдущий вопрос об обновлении и выполнении, но для меня он такой же медленный, как любая другая попытка, которую я сделал:
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()
Как я могу улучшить этот код, чтобы эффективно выполнять большое массовое обновление?