如何使用python将CSV头作为表列加载到sqlite数据库中
我有一个自1908年以来所有坠机事件的csv文件。csv标题列为如何使用python将CSV头作为表列加载到sqlite数据库中,python,sqlite,csv,shelve,Python,Sqlite,Csv,Shelve,我有一个自1908年以来所有坠机事件的csv文件。csv标题列为 Date,Time,Location,Operator,Flight #,Route,Type,Registration,cn/In,Aboard,Fatalities,Ground,Summary 我的代码在下面,但这会打印整个文件, 是否有一种使用CSV或搁置模块的方法,我可以使用它创建一个持久的数据库。 这里的最终目标是对数据进行切分, 例如:按日期排序、按年份分组等 #!/usr/bin/env python3.8 im
Date,Time,Location,Operator,Flight #,Route,Type,Registration,cn/In,Aboard,Fatalities,Ground,Summary
我的代码在下面,但这会打印整个文件,
是否有一种使用CSV或搁置模块的方法,我可以使用它创建一个持久的数据库。
这里的最终目标是对数据进行切分,
例如:按日期排序、按年份分组等
#!/usr/bin/env python3.8
import sqlite3
import csv
conn = sqlite3.connect(":memory:")
cur = conn.cursor()
cur.execute('DROP TABLE IF EXISTS air_disaster')
cur.execute('''
CREATE TABLE "air_disaster" (
"Date1" TEXT,
"Time1" TEXT,
"Location1" TEXT,
"Operator1" TEXT,
"Flight_No" TEXT,
"Route" TEXT,
"Type1" TEXT,
"Registration" TEXT,
"cn" TEXT,
"Aboard" REAL,
"Fatalities" REAL,
"ground" TEXT,
"Summary" TEXT
)
''')
with open("/Users/foobar/Downloads/Airplane_Crashes_and_Fatalities_Since_1908.csv") as csv_file:
csv_reader = csv.DictReader(csv_file)
for row in csv_reader:
Date1 = row["Date"]
Time1 = row["Time"]
Location1 = row["Location"]
Operator1 = row["Operator"]
Flight_No = row["Flight #"]
Route = row["Route"]
Type1 = row["Type"]
Registration = row["Registration"]
cn = row["cn/In"]
Aboard = row["Aboard"]
Fatalities = row["Fatalities"]
ground = row["Ground"]
Summary = row["Summary"]
cur.execute('''INSERT INTO air_disaster(Date1,Time1,Location1,Operator1,Flight_No,Route,Type1,Registration,cn,Aboard,Fatalities,ground,Summary)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)''', (Date1,Time1,Location1,Operator1,Flight_No,Route,Type1,Registration,cn,Aboard,Fatalities,ground,Summary))
conn.commit()
(cur.execute('SELECT * from air_disaster where Fatalities > 1000'))
如果您愿意使用pandas,则可以使用创建数据帧,然后使用保存到数据库。您还可以在上传数据之前拥有一个丰富的环境来转换或预处理数据。类似地,我有一个不使用熊猫的限制,python csv模块中是否有一种方法可以使用csv头自动生成列。