Импорт данных из CSV в MySQL с использованием python - PullRequest
0 голосов
/ 23 апреля 2020

Я сейчас работаю над школьным проектом и пытаюсь импортировать данные из файла CSV в MySQL, используя python. Пока это мой код:

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): Неверное значение даты:"% s " для столбца 'DOB' в строке 1 "

Формат даты, используемый в CSV-файле: гггг-мм-дд

Любые советы по этому вопросу очень помогут!

Ответы [ 2 ]

1 голос
/ 23 апреля 2020
  • Вам не нужно заключать в кавычки %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()
0 голосов
/ 23 апреля 2020

Проверьте тип данных для поля DOB в файле данных и столбце базы данных. Может быть проблема с данными или определением таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...