Python вставить фрейм данных в таблицу Mysql ошибка неизвестный столбец в «списке полей»

#python #mysql #sql #dataframe

#python #mysql #sql #фрейм данных

Вопрос:

У меня есть фрейм данных на python, который я хотел бы поместить в таблицу mysql. Мне нужно иметь возможность перезаписывать любые ранее существующие данные, уже имеющиеся в таблице. Имена столбцов точно совпадают между фреймом данных и таблицей mysql, однако я получаю ошибку «ProgrammingError: 1054 (42S22): неизвестный столбец ‘name1’ в ‘списке полей'» name1 находится как в фрейме данных, так и в таблице mysql. Я не уверен, где мне чего-то не хватает «, чтобы запрос правильно считывался в sql. Пожалуйста, вы можете помочь? Я уже пробовал «обычный» способ двойной проверки моих цитат и точек с запятой, скобок.

 import mysql.connector

mydb = mysql.connector.connect(
  host="pppp",
  user="wwww",
  passwd="mmmm",
  database="gggg"
)

mycursor = mydb.cursor()

#insert data
cols = "`,`".join([str(i) for i in final_as_df.columns.tolist()])

#sql statement to be passed into sql
sql = "INSERT INTO `MYTABLE` (`"  cols   "`) VALUES ("   "%s,"*(len(final_as_df.columns)-1)   "%s)"

mycursor.execute(sql, tuple(final_as_df.columns))

mydb.commit()

print(mycursor.rowcount, "record(s) inserted.")

mycursor.close()
mydb.close()
 

фрейм данных в python final_as_df

     name1   name2   name3
0   7777    6666    5555
1   9999    4444    3333
 

Таблица MySQL с именем MYTABLE (сейчас в ней нет данных, поэтому name1, name2, name3 — это просто пустые столбцы)

 name1    name2    name3
 

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

1. Если вы используете MySQL, пожалуйста, не помечайте SQL Server.

2. Вы уже пытались распечатать свой запрос перед вставкой, чтобы убедиться, что строковые значения анализируются правильно? Это всего лишь ошибка MySQL. Это всегда помогало мне справляться с подобными ошибками.