pandas to_sql postgres复制行

时间:2019-11-19 17:03:24

标签: pandas postgresql sqlalchemy

pandas to_sql的数据上传到postgres时,添加的行被复制8倍。

print(len(df)
10000


df.to_sql(tablename, engine, index=False, if_exists='append')

test = pd.read_sql(tablename, sql.psg_engine)


print(len(test))
80000

test = test.drop_duplicates()


print(len(test))
10000

在使用以下命令添加主键和索引之后发生,如果我只是将数据发送到使用to_sql新创建的表,则不会发生。这就是我设置键和索引的方式:

ALTER TABLE tablename ADD COLUMN ID SERIAL PRIMARY KEY;
CREATE INDEX parent ON tablename(parent);
CREATE INDEX key_value ON tablename (key,value);

同时在postgres终端上运行\d table name时,出现以下错误:

ERROR:  column c.relhasoids does not exist
LINE 1: ...riggers, c.relrowsecurity, c.relforcerowsecurity, c.relhasoi...

我使用以下字符串设置了sqlalchemy engine

engine  = sqlalchemy.create_engine("postgresql+pg8000://postgres:password@localhost:7777/bd")

这是我第一次使用postgres。谢谢!

0 个答案:

没有答案