скрипт Python для передачи TXT-файла в базу данных sqlite3 - PullRequest
0 голосов
/ 16 октября 2019

Мне нужно передать текстовую строку для каждой строки в TXT-файле в столбец из таблицы, которая содержит 4 пустых столбца в базе данных.

import sqlite3

conn = sqlite3.connect('prueback.db')
c = conn.cursor()


num_lines = sum(1 for line in open('subgenres.txt'))
f=open('subgenres.txt')
lines=f.readlines()
i=1
while True:
    subgenrename = (lines[i])
    c.execute("INSERT INTO subgenero (subgenrename) VALUES (?)", (subgenrename,))
    conn.commit()
    i+=1
    if i == num_lines:
        break


conn.close()

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Просто open файл с помощью with контекстного менеджера и итерация построчно. Никогда не используйте readlines, так как это может занять много памяти, так как вы читаете весь файл сразу.

with open('subgenres.txt') as f:
   for line in f:
       c.execute("INSERT INTO subgenero (subgenrename) VALUES (?)", (line,))
       conn.commit()
0 голосов
/ 16 октября 2019

Это может быть довольно наивный способ сделать это, но вы пробовали pandas? Панды могут добавить немного накладных расходов, но это определенно полезно для такого рода задач, и это не особенно медленно для sqlite (другая история с PostgreSQL).

import pandas as pd
import sqlite3

conn = sqlite3.connect('prueback.db')
cur = conn.cursor()

# Don't know which type of file you have. I'm assuming a fixed width column text
data = pd.read_fwf('subgenres.txt') 

# This will create the table, or add rows if exists (just change the if_exists option to "append")
data.to_sql('subgenero', conn, if_exists='replace')

conn.close()

Теперь, если у вас есть другая таблица вВ вашей базе данных вы можете извлечь данные из базы данных, используя Pandas:

table_db = pd.read_sql("select * from table", con=conn)

# In case they have identifiers (or if they keep the same row order)
table_db['subgenero'] = table_db.merge(suborder, on='id' ,how='inner')

table_db.to_sql('table', conn, if_exists='replace')

Проверьте дополнительную информацию в Документация Pandas и прочитайте с особым вниманием pd.to_sql документация , есть много вариантов, которые могут быть особенно полезны в зависимости от вашего варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...