我有一个包含两列的csv文件。我创建了一个名为beacon的数据库,该数据库使用col1和col2。我尝试了两种不同的方式,一种使用熊猫,另一种不使用。两种方式都可以使我很好地读取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列和beacon表使用相同的列名。 预先感谢!
答案 0 :(得分:0)
我认为检查数据是否写入db的方式存在一些缺陷:
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