我目前正在研究一个需要整理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'
我对为什么收到此错误感到困惑。也许是我整天在屏幕上度过的时间。
谢谢您的指导/帮助。
答案 0 :(得分:0)
是您的索引吗?
df.reset_index(drop=False)
答案 1 :(得分:0)
我发现了错误所在。实际上,我为SQL数据库准备的“ .csv”文件在每个值旁边都有一个“ b”值。这就是为什么它找不到我确定的密钥的原因。
要解决此问题,我将osm修改为csv函数,以便正确创建csv。