尝试将数据插入具有唯一约束的新空表中。当我删除ON CONFLICT语句时,即使表为空,代码错误也会立即出现,并违反第一次插入尝试中的唯一约束。当我从表中删除唯一约束时,重新运行代码时将复制数据。
我希望插入程序验证该行是否存在,不执行任何操作,如果不存在,则进行新输入。我在Mac OSX上运行postgres 11.3。任何帮助表示赞赏。
psycopg2.extras.execute_values(cur,
"insert into ferc_hots (html,link) values %s",
values)
on conflict (html,link) do nothing
con.commit()
print("Records inserted successfully")
con.close()
答案 0 :(得分:0)
您的修复工作应该真的很简单,因为您将on conflict
行放在错误的位置。
psycopg2.extras.execute_values(cur,
"""insert into ferc_hots (html,link) values %s
on conflict (html,link) do nothing""", # Moved to inside SQL
values)
con.commit()
print("Records inserted successfully")
con.close()