在用CSV数据填充SQL表时出现“ KeyError”

时间:2020-04-13 14:55:58

标签: python sql sqlite

我目前正在研究一个需要整理OSM数据(Udacity课程)并将其添加到准备进行查询的SQLite数据集中的项目。

我目前正在尝试使用以下功能将'.csv'文件添加到现有的SQL表中:

with open('crawley_nodes.csv','r', encoding = 'utf-8') as fin:
    dr = csv.DictReader(fin)
    to_db = [(i['id'], i['lat'], i['lon'], i['user'], i['uid'], i['version'], i['changeset'], i['timestamp']) for i in dr]
    cur.executemany("INSERT INTO nodes(id, lat, lon, user, uid, version, changeset, timestamp) VALUES (?,?,?,?,?,?,?,?);", to_db)

conn.commit()

但是,每次我尝试执行它时,都会出现以下错误:

KeyError: 'id'

我对为什么收到此错误感到困惑。也许是我整天在屏幕上度过的时间。

谢谢您的指导/帮助。

2 个答案:

答案 0 :(得分:0)

是您的索引吗?

df.reset_index(drop=False) 

答案 1 :(得分:0)

我发现了错误所在。实际上,我为SQL数据库准备的“ .csv”文件在每个值旁边都有一个“ b”值。这就是为什么它找不到我确定的密钥的原因。

要解决此问题,我将osm修改为csv函数,以便正确创建csv。