Всем привет. Объясните кое-что стажеру. Недавно задавал вопрос каким способом быстрее всего записать в файл и читать из файла (
Какой способ чтения и записи в файл, а также сам тип файлов, наилучший в плане быстродействия при использовании Python для обработки больших данных?). Как я понял "не нужно изобретать велосипед и использовать СУБД". Ок, я так и сделал. Вместо того, чтобы создавать несколько файлов .csv я создал одну базу данных в которой было множество таблиц.
записывал в базу следующим скриптом:
import sqlite3
import pandas as pd
from datetime import datetime
from get_difference import get_change
from get_public_data import ticker
def make_ticker_db():
while True:
with sqlite3.connect('ticker.db') as conn:
request_1 = ticker()
# time.sleep(1)
try:
request_2 = ticker()
timestamp = datetime.now().strftime("%d:%m:%Y %H:%M:%S")
except Exception as error:
print(error)
continue
if request_2 == request_1:
request_1 = request_2
else:
change_dict = get_change(request_1, request_2, timestamp)
for i in change_dict:
pd.DataFrame(change_dict[i]).to_sql(i, conn, if_exists='append', index=False)
conn.commit()
if __name__ == "__main__":
make_ticker_db()
Как видно, данные добавляются в базу постоянно. Но, как оказалось, если в это время пытаться прочесть какую-то таблицу, то процесс чтения быстротой не блещет. Читал, как и записывал, через pandas:
with sqlite3.connect('ticker.db') as conn:
print(pd.read_sql("SELECT * from table_name", conn))
DBeaver вообще отказывался открывать файл базы данных, пока в нее что-то записывается.
Вопрос: что я делаю не так. И как нужно делать?