Я создал 200-строчную базу данных SQLite.Позже мне нужно обновить все эти строки.
Если быть точным, я хочу обновить два значения (называемых Test2 и Test3 в моем примере) каждой строки, используя их старое значение и добавить (+200 и +400 в примере) что-то к их значению.
Мой код кажется довольно медленным, поэтому я добавил таймер, поэтому посмотрим, как долго должен выполняться мой код.На данный момент для 200 строк около 0,7879 секунд.
Для работы с большими БД необходимо ускорить этот код.Возможно, вы, ребята, могли бы помочь начинающему python / sql сделать мой Код более эффективным!
Вот мой Код (пока я пытался сделать минимальный пример):
import sqlite3
import time
def database_test():
conn = sqlite3.connect('SQLite_Test.db')
c = conn.cursor()
i = 0
for i in range(200):
c.execute('SELECT Test2, Test3 FROM Test WHERE Test1 = ?', (i,))
DB_Values = []
DB_Values = c.fetchone()
Value1 = DB_Values[0]+200
Value2 = DB_Values[1]+400
c.execute('''UPDATE Test SET Test2 = ?, Test3 = ? WHERE Test1= ?''', (Value1, Value2, i))
i += 1
# Save (commit) the changes
conn.commit()
start_time = time.time()
database_test()
print("--- %s seconds ---" % round((time.time() - start_time),4))
Я используюКод, показанный ниже, обновляет 20 тысяч строк в моей базе данных (для тестирования в данный момент).Я ожидал, что все строки 20 КБ добавят 1000 к Test2 и Test3.Но этого не происходит.Строки 1-3 и 11-21 обновляются, между ними ничего не происходит.101 до 201 также обновляется должным образом, но после этого еще один огромный разрыв.
Почему это происходит?
Пожалуйста, смотрите мой код ниже:
def database_update_test():
# Open Database
conn = sqlite3.connect('SQLite_Test.db')
c = conn.cursor()
c.execute('''UPDATE Test SET Test2 = Test2+1000, Test3 = Test3+1000 WHERE Test1 >= 0 and Test1 < 20000''')
# Save (commit) the changes
conn.commit()