【发布时间】:2018-07-23 16:15:47
【问题描述】:
我正在尝试将 csv 转换为数据库。我在网上找到了这段代码:
import csv, sqlite3
conn = sqlite3.connect('data.db')
curs = conn.cursor()
curs.execute('''DROP TABLE IF EXISTS data''')
curs.execute('''CREATE TABLE data(col1 INT, col2 TEXT, col3 INT, mar,
loc, inc, iscr, escr)''')
with open('sample.csv', 'r') as fin:
reader = csv.DictReader(fin)
to_db = [(i['col1'], i['col2'], i['col3'], i['col4'], i['col5'], i['col6'], i['col7'], i['col8'], ) for i in reader]
curs.executemany('''INSERT INTO data (col1, col2, col3, col4, col5, col6, col7, col8)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)''', to_db)
conn.commit
conn.close()
但是当我运行它时,我得到以下错误:
Traceback (most recent call last):
File "/Users/dirkkoomen/Desktop/Python cursus/inzendopgave 4/opgave 5/xxxxx.py", line 20, in <module>
to_db = [(i['col1'], i['col2'], i['col3'], i['mar'], i['loc'], i['inc'], i['iscr'], i['escr'], ) for i in reader]
File "/Users/dirkkoomen/Desktop/Python cursus/inzendopgave 4/opgave 5/xxxxx.py", line 20, in <listcomp>
to_db = [(i['col1'], i['col2'], i['col3'], i['mar'], i['loc'], i['inc'], i['iscr'], i['escr'], ) for i in reader]
KeyError: 'col1'
有谁知道我做错了什么?
编辑:
这就是我的 csv 文件的样子
51,F,46,M,0,15100,531,555
52,M,29,M,2,14200,673,633
53,M,25,S,0,22200,742,998
54,M,36,M,2,1000,677,646
55,F,99,S,0,10600,608,998
56,F,45,M,2,6100,710,743
57,M,99,M,2,16500,679,646
58,F,37,M,0,7400,637,683
59,M,45,S,0,22800,683,998
60,M,22,S,0,6400,699,998
61,M,32,S,0,3100,721,998
【问题讨论】:
-
你能举例说明 csv 文件的样子吗?
-
看看你的错误是什么:
KeyError。尝试通过索引(i[0]、i[1]等)而不是按键来访问您的列,看看是否有帮助。 -
@a625993 如果我将其更改为 i[0] 等,那么我会得到与 '0' 而不是 'col1' 相同的错误
-
@Karl 将其添加到我的问题中,看起来像这样