如何使用python将CSV头作为表列加载到sqlite数据库中

如何使用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

我有一个自1908年以来所有坠机事件的csv文件。csv标题列为

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头自动生成列。