Как вставить составной столбец как один столбец в sql

#python #mysql #sql #pandas

Вопрос:

 for row in dfp.itertuples():  cursor.execute('''  INSERT INTO athletes(id, season, name)  VALUES (?,?,?)  ''',  (  row.id,  row.season,  row.name,  ) '''   )  

mysql.connector.ошибки.Ошибка программирования: Не все параметры были использованы в инструкции SQL.

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

Комментарии:

1. Удалите эту последнюю тройную одинарную кавычку: '''

2. да, на самом деле это не часть кода, я просто поместил его для переполнения стека, чтобы он отображался в формате кода, а затем забыл удалить. Моя вина. Проблема по-прежнему заключается в том, что имя рассматривается как два столбца. Например, если у нас есть имя «Джон Смит» в первой строке, мы рассматриваем их как два параметра

3. Если в таблице 3 столбца и вы передаете 3 параметра, то ошибки быть не должно.

4. покажите таблицу создания и полный код выполнения, сообщение об ошибке не соответствует образцу кода

5. СОЗДАЙТЕ ТАБЛИЦУ спортсменов( id int, сезон int, имя varchar(50), первичный ключ(идентификатор, сезон))

Ответ №1:

В pymysql не используйте ? в качестве заполнителей параметров. Воспользуйся %s .

 cursor.execute('''INSERT INTO athletes(id, season, name) VALUES (%s,%s,%s)''',  (row.id, row.season, row.name,))  

Комментарии:

1. Должно ли это быть также %s для даты?

2. Да, для всех типов данных. При использовании в качестве заполнителя параметров для pymysql это не элемент управления форматированием, как для Python format() или f-строк, он всегда %s используется независимо от типа данных.