Вставка CSV в sqlite3 - PullRequest
       0

Вставка CSV в sqlite3

0 голосов
/ 26 февраля 2020

У меня есть CSV-файл, который имеет два столбца. Я создал базу данных под названием beacon, которая принимает col1 и col2. Я пробовал два разных способа, один с использованием pandas, а другой без. Оба способа позволяют мне нормально читать файл csv, но я не думаю, что они фактически добавляют эти два столбца в мою базу данных!

Первый метод

import sqlite3
import pandas as pd
from pandas import DataFrame

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

read_beacon = pd.read_csv (r'/Users/seifeldeen/Downloads/BeaconID&ACID.csv')
read_beacon.to_sql('beacon', conn, if_exists= 'append', index = False)
conn.commit()
df = DataFrame(c.fetchall(), columns=['col1','col2'])
print (df)
export_csv = df.to_csv (r'/Users/seifeldeen/Downloads/export_list.csv', index = None,         header=True) 

Второй метод

import csv, sqlite3

con = sqlite3.connect("MyDB.db'")
cur = con.cursor()
cur.execute("CREATE TABLE t (col1, col2);") 

with open('BeaconID&ACID.csv','r') as fin: 
    dr = csv.DictReader(fin) # comma is default delimiter
    to_db = [(i['col1'], i['col2']) for i in dr]

cur.executemany("INSERT INTO n (col1, col2) VALUES (?, ?);", to_db)
con.commit()
con.close

Кроме того, я убедился, что столбцы csv и таблица маяков используют одинаковые имена столбцов. Заранее спасибо!

1 Ответ

0 голосов
/ 26 февраля 2020

Я думаю, что способ проверки того, что данные записываются в дб, немного ошибочен: df = DataFrame(c.fetchall(), columns=['col1','col2'])

Вы никогда не выполняли запрос, используя курсор (c), и пытались использовать c .fetchall (). Это всегда будет возвращать пустой список [].

import pandas as pd
import sqlite3

df = pd.read_csv('test.csv')

conn = sqlite3.connect('test.db')
cursor = conn.cursor()

df.to_sql('test', conn, if_exists='append', index=False)
conn.commit()

cursor.execute('SELECT * from test')
cursor.fetchall() # this should return a list of all entries in your db
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...