Nas*_*lla 2 sql postgresql insert distinct
我试图在数据库中插入不同的值:我的查询是这样的:
query2 = "INSERT INTO users (id, name, screenName, createdAt, defaultProfile, defaultProfileImage,\
description) SELECT DISTINCT %s, %s, %s, %s, %s, %s, %s;"
cur.execute(query2, (user_id, user_name, user_screenname, user_createdat, \
default_profile, default_profile_image, description))
Run Code Online (Sandbox Code Playgroud)
但是,我仍然收到错误:psycopg2.IntegrityError: 重复的键值违反了唯一约束 "user_key"。
我猜查询正在插入所有数据,然后选择不同的值?我猜想的另一种方法是将所有数据存储在临时数据库中,然后在那里检索它们。但有没有更简单的方法呢?
谢谢你!
您似乎正在尝试执行insert ... if not exists类型操作。如果您使用的是 PostgreSQL 9.5,则应该使用INSERT ... ON CONFLICT NO ACTION. 请参阅如何在 PostgreSQL 中进行 UPSERT(合并、插入...重复更新)?了解相关详情。
SELECT DISTINCT,按照您使用的方式使用,不会对您有帮助。它仅对语句输入的行进行操作SELECT。它不知道输出行的去向(在您的情况下是表)。
您需要对表进行联接,或者如果该行已存在于目标表中,则WHERE NOT EXISTS (SELECT 1 FROM mytable WHERE ...)使用INSERT INTO ... SELECT ...'s部分返回零行。SELECT
但请注意,这仍然受到竞争条件的影响。如果您有多个并发客户端,您还需要该LOCK表。
| 归档时间: |
|
| 查看次数: |
15094 次 |
| 最近记录: |