MySQL ProgrammingError 1064, обработка необработанных данных - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь вставить свои данные в уже созданную мной базу данных. Я предоставил схему для базы данных, поэтому она принимает varchar и текст для соответствующих столбцов и дату / целое число для двух других. Я могу подключиться к своей базе данных, но я борюсь с сообщениями об ошибках, и мой код продолжает давать сбой из-за моего форматирования. Если кто-нибудь может подсказать, как это можно изменить, я был бы безмерно признателен! (Я закомментировал попытку / ошибку, просто чтобы получить сообщение об ошибке при запуске кода.)

   #open db connection
    db = mysql.connector.connect(host='localhost', user='root', database='WebScraping')
    print(db)
    #prepare a cursor object using cursor() method
    cursor = db.cursor()
    #prepare SQL query to INSERT a record into the database
    sql = "INSERT INTO WebScraping.Reviews(name, location, date, rating, content) VALUES ('{}', '{}', '{}', '{}', '{}')".format(name, location, date, rating, content)
   #try:
        #execute the SQL command
    cursor.execute(sql)
   #commit your changes in the database
    db.commit()
    print("Record committed")
    #except:
        #Rollback if there is an error
        #db.rollback()
    #disconnect from the server
    cursor.close()
    db.close()

1 Ответ

1 голос
/ 07 августа 2020

Не используйте форматирование строк, используйте параметры запроса.

sql = """INSERT INTO WebScraping.Reviews(name, location, date, rating, content) 
         VALUES (%s, %s, %s, %s, %s)"""
cursor.execute(sql, (name, location, date, rating, content))

Если date находится в формате mm/dd/yyyy, вам нужно проанализировать его с помощью STR_TO_DATE().

sql = """INSERT INTO WebScraping.Reviews(name, location, date, rating, content) 
         VALUES (%s, %s, STR_TO_DATE(%s, '%m/%d/%Y'), %s, %s)"""
...