#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. Это всегда помогало мне справляться с подобными ошибками.