sql queries and python



我正在尝试在CSV文件上使用sqlite3和python3来提取某些特定数据的booking_id表。但是我收到一个KeyError,这意味着请求的表不在字典中。我不明白。

import csv
import sqlite3
con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("CREATE TABLE t (booking_id,customer_id,source,status,checkin,checkout,oyo_rooms,hotel_id,amount,discount,date,PRIMARY KEY(booking_id))")
with open('TableA.csv', 'r') as fin:
dr = csv.DictReader(fin, delimiter='t')
to_db = [(i['booking_id'], i['customer_id'], i['source'], i['status'], i['checkin'], i['checkout'],
i['oyo_rooms'], i['hotel_id'], i['amount'], i['discount'], i['date']) for i in dr]
cur.executemany(
"INSERT INTO t (booking_id,customer_id,source,status,checkin,checkout,oyo_rooms,hotel_id,amount,discount,date) VALUES (?, ?,?, ?, ?,?, ?,?, ?,?);", to_db)
con.commit()
con.close()
#error message 
KeyError: 'booking_id'

这是 csv 文件 - https://pastebin.com/xbgFryhZ

您收到的关键错误意味着您的 csv 文件没有该列。发布 csv 文件中的前几行,以便我们可以查看。

编辑:

现在您添加了 CSV 文件,我们可以看到它用逗号分隔,而不是制表符。

改变

dr = csv.DictReader(fin, delimiter='t')

dr = csv.DictReader(fin, delimiter=',')

最新更新