Как мне скопировать только до определенного столбца в CSV-файл в таблицу базы данных sqlite? - PullRequest
0 голосов
/ 28 марта 2020
import sqlite3
import csv

con = sqlite3.connect("covid_student.db")
cur = con.cursor()

with open ('covid.csv', 'r') as f:
    reader = csv.reader(f)
    columns = next(reader) 
    query = 'insert into Patient({0}) values ({1})'
    query = query.format(','.join(columns), ','.join('?' * len(columns)))
    cursor = con.cursor()
    for data in reader:
        cursor.execute(query, data)
    cursor.commit()

con.commit()
con.close()

Это код, который я получил до сих пор. Как я могу улучшить его, чтобы достичь того, что мне нужно.

1 Ответ

1 голос
/ 28 марта 2020

Вы можете упростить ваш код с помощью функции executemany () библиотеки sqlite3, которая выполнит массовую вставку за один go. Считайте имена столбцов в список, а остальные данные - в другой, затем выполните массовую вставку:

with open('covid.csv', 'r') as f:
    reader = csv.reader(f)
    columns = next(reader)
    query = "INSERT INTO Patient({0}) VALUES ({1})".format(','.join(columns), ','.join(['?'] * len(columns)))
    rest = [row for row in reader]
    cursor.executemany(query, rest)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...