我有一个Azure函数,可以从API中检索数据并将其保存到Postgres DB。现在我有这个返回错误与重复的ID
数据库操作时出错:重复键值违反唯一约束“contacts_pkey”。Key(id)=(12736022)已存在。
下面是函数中的insert语句
def process_contacts(dbString, data, db_table_contacts):
sql_contacts = f"""INSERT INTO {db_table_contacts}(uuid, name, age, gender, .....)
VALUES (%s, %s, %s, %s, %s, .....)
ON CONFLICT (uuid) DO UPDATE SET
我在处理每笔交易250份的记录。这也是我在Postgres中的约束
我在这里错过了什么,记录是自动cimeneting的ID,并应更新时,有重复设置?
1条答案
按热度按时间2skhul331#
以下是我的步骤:
process_contacts
。它包含三个参数dbString、data、Bnewcontacts。*dbString用于确定与PostgreSQL数据库的连接。data用于存储数据库中存在的数据。
uuid.uuid4()
为每个联系人生成新的UUID。sql_contacts
由SQL语句组成,其中包含ON CONFLICT子句的CONFLICT语句。ON CONFLICT
,如果表中已经存在具有相同id的记录,则将使用新值更新该记录。我在下面的代码中尝试了同样的方法。在您的代码中,您试图插入已经存在于数据库中的id,但ON CONFLICT
用于uuid。我尝试了相同的,它给出了相同的错误,你在上面显示。输出:
ON CONFLICT
我试图插入数据库中已经存在的数据.年龄值已在上述输出中更新。