使用 Python 将数据从 csv 导入数据库

Importing data from csv to database using Python

我需要使用 csv 文件中的信息创建数据库,格式:
name,house,birth 示例:

Adelaide Murton,Slytherin,1982  
Adrian Pucey,Slytherin,1977

然后我需要把名字拆分后导出到数据库,格式如下: first | middle | last | house | birth

下面是我的代码;它导出像第一行只有名字,第二行只有中间名,第三行只有姓氏,第四行只有房子等等,其他一切都显示为 NULL。我的数据库中最终有 792 行而不是 40 行。 Output image

import csv
import sys
import cs50

db = cs50.SQL("sqlite:///students.db")

if len(sys.argv) != 2:
        sys.exit("Usage: import.py file.csv")
    
with open(sys.argv[1],'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        x = row["name"].split()
        db.execute("INSERT INTO students (first, middle, last, house, birth) VALUES (?,?,?,?,?)", x[0], x[1] if len(x)==3 else None, x[2] if len(x)==3 else x[1], row["house"], row["birth"])

确保学生 table 在 运行 导入之前为空,否则所有尝试的所有行,无论是否有错误,都在数据库中。创建所描述输出的错误只会插入大约 280 行。 (每 1 个 csv 行 7 db 行)