Индекс в pandas.to_sql, ошибка значения: дубликат имени в индексе / столбцах: невозможно вставить идентификатор, уже существует

#python #mysql #pandas #indexing

#питон #mysql #панды #индексирование

Вопрос:

Я читаю и записываю таблицу MySQL с помощью pandas, и я почти уверен, что значение, которое я пытаюсь установить в качестве индекса во время записи, уникально. Я проверил таблицу без индекса и count(distinct(id)) выдал то же количество строк , count(id) что и . Тем не менее, я все равно получаю сообщение об ошибке

 'ValueError: duplicate name in index/columns: cannot insert product_id, already exists'
 

если я установлю
index=True, index_label="id"

Я пробовал reset_index , но это не помогло.

df.to_sql(name=config.DB_TABLE, con=connection, schema=config.DB_SCHEMA, if_exists='fail', index=True, index_label="id")

Что я делаю не так?

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

1. Как вы пишете таблицу: «заменить» или «добавить»? Если это «добавить», оно может дублироваться с существующими значениями в этом столбце. Можете ли вы показать нам схему таблицы базы данных и свой код для to_sql ?

2. @YilunZhang Я удаляю таблицу перед записью в нее, поэтому она даже не существует до выполнения to_sql

Ответ №1:

У меня была такая же проблема, и мне было интересно. Проблема заключалась в том, что в то же время во время программирования я добавил столбец в свой фрейм данных. Следовательно, столбцы больше не совпадали со столбцами SQL. Вы должны проверить соответствие ваших столбцов.