0

如何在使用 Blaze 的Odo将数据帧存储在 postgres 数据库中时忽略重复的行?

例如,我像这样存储前 3 行:

>>> odo(df[:3], 'postgresql:///my_db::my_table')

my_table有一个列ID作为主键。如果我添加了更多,但这次包括前最后一行,我想跳过该行并添加其他行而不是获取该行IntegrityError

>>> odo(df[2:5], 'postgresql:///my_db::my_table')

    IntegrityError: (psycopg2.IntegrityError) duplicate key value violates unique constraint  ...

我怎样才能做到这一点?如果数据库有数百万行,从数据库加载ID值并检查重复项对我来说似乎很昂贵。有没有更好的选择?像这样的东西:

INSERT...ON DUPLICATE KEY IGNORE

Blaze:0.8.3,Postgres:9.4.4,Psycopg2:2.6.1

4

1 回答 1

1

的数据模型odo只支持追加,不支持合并。您需要在通过之前删除重复项odo,或者使用数据库删除重复项。尝试添加一个自增字段,并将其设置为主键。这将解决您IntegrityError的插入问题,之后您可以删除重复项。

于 2016-01-25T19:56:31.660 回答