Как добавить запись в таблицу в MySQL, используя python? - PullRequest
0 голосов
/ 21 января 2020

В моем коде я пытаюсь вставить данные в таблицу user_attempts моей БД, которая имеет два поля: tryID (с автоинкрементом) и имя пользователя. Поэтому, когда я передаю данные, мне нужно только передать имя пользователя, так как идентификатор попытки генерируется MySQL. Это мой код:

username='test1'
add_userattempt=mycursor.execute('INSERT INTO user_attempt (username) VALUES %(currentuser)s', {'currentuser' :username})
mydb.commit()

Однако он возвращает эту ошибку:

Traceback (most recent call last):
  File "C:\Users\User\Desktop\project\AA game things\Iteration 1\review.py", line 266, in <module>
    reviewPage(screen) # the home screen function is called which essentially starts the whole program.
  File "C:\Users\User\Desktop\project\AA game things\Iteration 1\review.py", line 132, in reviewPage
    add_userattempt=mycursor.execute('INSERT INTO user_attempt (username) VALUES %(currentuser)s', {'currentuser' :username})
  File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\cursor.py", line 569, in execute
    self._handle_result(self._connection.cmd_query(stmt))
  File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\connection.py", line 590, in cmd_query
    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
  File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\connection.py", line 478, in _handle_result
    raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test1'' at line 1

1 Ответ

1 голос
/ 21 января 2020

Как видно из полученной ошибки, в вашем коде SQL есть синтаксическая ошибка. Вместо

mycursor.execute('INSERT INTO user_attempt (username) VALUES %(currentuser)s', {'currentuser' :username})

должно быть

mycursor.execute('INSERT INTO user_attempt(username) VALUES(%s)', username)

Эта веб-страница здесь (https://www.mysqltutorial.org/python-mysql-insert/) объясняет всю процедуру вставки данных в MySQL таблицы, используя python очень хорошо. Почему вы объявляете оператор execute как переменную?

Надеюсь, это поможет!

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