Я перебираю различные текстовые файлы, загружаю текст в словари словарей и затем подключаюсь к базе данных и вставляю эти тексты в таблицу.
Словари словарей, потому что в каждом файле у меня есть несколько текстовых блоков, которые содержат различные части текста, которые мне нужны, такие как имя, тип, содержание и так далее. И поскольку мне нужна мета-упорядоченная информация, я сохраняю данные в этих двух слоях: уровень файла и уровень текстового блока
Это мой код - сначала строка для подготовки DB INSERT:
table_q = 'zz_querys'
query_id = 'query_name'
type_col = 'query_type'
descr_col = 'query_descr'
code_col = 'pure_code'
insertQuery = 'INSERT INTO [' + table_q + '] ([' + query_id + '], ' \
'[' + type_col + '], ' \
'[' + descr_col + '], ' \
'[' + code_col + '])' \
'\nVALUES (?, ?, ?, ?)'
и затем присоединение к базе данных:
with conn:
cursor = conn.cursor()
for file, text_block in all_data.items():
file = os.path.splitext(file)[0]
for subtext in text_block:
cat = text_block[subtext]
qName = cat['query_name']
qType = cat['type']
qDescr = cat['descr_de']
qCont = cat['content']
cursor.execute(insertQuery, (qName, qType, qDescr, qCont))
Так что с точки зрения производительности я чувствую, что это неэффективно - я вызываю код SQL INSERT каждый раз, когда пробегаю l oop (каждую вставку строка) но я изначально не исходил из технической стороны, поэтому я не уверен, есть ли способ, который намного эффективнее.
Моя альтернативная идея состояла в том, чтобы загрузить мои вложенные диктитарные результаты в pandas dataframe (или сохранить результаты в dataframe с самого начала), а затем сразу вставить весь dataframe в базу данных. Я не делал этого в pandas раньше, но я предполагаю, что это возможно.
Будет ли это иметь огромное значение для производительности? Или какой еще самый эффективный способ сделать это?