【问题标题】:Inserting CSV to sqlite3将 CSV 插入到 sqlite3
【发布时间】:2020-06-10 03:16:13
【问题描述】:

我有一个包含两列的 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 列和信标表使用相同的列名。 提前致谢!

【问题讨论】:

    标签: python sql pandas sqlite csv


    【解决方案1】:

    我认为您检查数据是否写入 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 2017-02-11
      • 2019-01-12
      • 2022-01-21
      • 2021-06-05
      相关资源
      最近更新 更多