#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. Вы должны проверить соответствие ваших столбцов.