#python #python-3.x #postgresql
Вопрос:
Я хотел бы выполнить обновление в своей базе данных sql с помощью «pangres», однако оно возвращает эту ошибку
raise IndexError("All index levels must be named!")
IndexError: All index levels must be named!
что мне делать?
df = pd.read_excel('personne.xlsx')
upsert(engine=engine,
df=df,
table_name='personne',
if_row_exists='update')
Ответ №1:
Назовите индекс df или задайте столбец в качестве индекса. Смотрите вики-страницу Pangres.
Для dfs с df['unique_id']
использованием в качестве первичного ключа:
# create SQL table with first df, set if_exists as needed
df.to_sql('table_name', engine, if_exists = 'fail', index = False)
with engine.connect() as con: # set df['unique_id'] as primary key in SQL
con.execute("ALTER TABLE table_name ADD PRIMARY KEY (unique_id);")
# set df2['unique_id'] as index
df2.set_index(['unique_id'], inplace = True, drop = False)
pangres.upsert(engine, df2, 'table_name', if_row_exists ='update')