dataframe.to_sql索引作为postgresql中的主键

时间:2018-05-22 13:49:04

标签: postgresql pandas sqlalchemy

我有一个带有索引的数据框,我希望将其存储在postgresql数据库中。为此,我使用df.to_sql(table_name,engine,if_exists='replace', index=True,chunksize=10000)

pandas dataframe中的索引列被复制到数据库,但未设置为主键。

有两种解决方案需要额外的步骤:

  1. 指定架构df.to_sql(schema=) docs
  2. 在摄取表格后设置主键。查询:

    ALTER TABLE table_name ADD PRIMARY KEY(id_column_name)

  3. 有没有办法在不指定架构或更改表的情况下设置主键?

1 个答案:

答案 0 :(得分:2)

调用to_sql后:

import sqlalchemy
engine = create_engine()
engine.execute('ALTER TABLE schema.table ADD PRIMARY KEY (keycolumn);')

不幸的是,pandas.to_sql 没有设置主键,它甚至还会破坏现有表的主键。必须了解主键。