繁体   English   中英

使用 python 将数据从 CSV 导入到 MySQL

[英]Importing data from CSV to MySQL using python

我目前正在做一个学校项目,我正在尝试使用 python 将数据从 CSV 文件导入到 MySQL。到目前为止,这是我的代码:

import mysql.connector
import csv

mydb = mysql.connector.connect(host='127.0.0.1', user='root', password='abc123!', db='jd_university')

cursor = mydb.cursor()

with open('C:/Users/xxxxxx/Downloads/Students.csv') as csvfile:
    reader = csv.DictReader(csvfile, delimiter=',')
    for row in reader:
        cursor.execute('INSERT INTO Student (First_Name, Last_Name, DOB, Username, Password, Phone_nr,'
                       'Email, StreetName_nr, ZIP) '
                       'VALUES("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")',
                       row)

mydb.commit()
cursor.close()

当我运行这个时,我得到这个错误:“mysql.connector.errors.DataError:1292 (22007):不正确的日期值:第 1 行的‘DOB’列的‘%s’”

CSV文件中使用的日期格式是yyyy-mm-dd

关于此的任何提示都会有很大帮助!

  • 您不需要引用%s占位符。
  • 由于您使用的是DictReader ,因此您需要row表达式中命名列(或者不使用 DictReader 并希望顺序正确,我不会这样做)。

试试这个:

import mysql.connector
import csv

mydb = mysql.connector.connect(
    host="127.0.0.1", user="root", password="abc123!", db="jd_university"
)

cursor = mydb.cursor()

with open("C:/Users/xxxxxx/Downloads/Students.csv") as csvfile:
    reader = csv.DictReader(csvfile, delimiter=",")
    for row in reader:
        values = [
            row["First_Name"],
            row["Last_Name"],
            row["DOB"],
            row["Username"],
            row["Password"],
            row["Phone_nr"],
            row["Email"],
            row["StreetName_nr"],
            row["ZIP"],
        ]
        cursor.execute(
            "INSERT INTO Student (First_Name, Last_Name, DOB, Username, Password, Phone_nr,"
            "Email, StreetName_nr, ZIP) "
            "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
            values,
        )

mydb.commit()
cursor.close()

验证数据文件和数据库列中 DOB 字段的数据类型。 可能是数据问题或表定义问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM