如何在使用 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