【发布时间】:2021-05-14 14:07:23
【问题描述】:
我正在使用 python 和 psycopg2 将字典插入到我的 PostgreSQL 数据库中。
我有 postgres 13.2 版
目前我只有下面的代码可以执行:
INSERT INTO movie_data(title, description, rating, published, cast_and_crew, age_group, country)
VALUES ('movie name', 'something', 8, 2020, 'an actor', 'pg-13', 'GB')
但因为我的数据库中已经有这一行,所以我得到 '已经存在' 错误。
我已经尝试了 ON CONFLICT DO NOTHING,但我收到以下错误:
there is no unique or exclusion constraint matching the ON CONFLICT specification
忽略重复行并继续插入的最佳方法是什么?
我是 SQL 的新手,所以如果有人能为此目的解释并包含整个代码,我将不胜感激。
更新:下面是我的CREATE TABLE 声明
CREATE TABLE public.movie_data
(
title text COLLATE pg_catalog."default" NOT NULL,
description text COLLATE pg_catalog."default" NOT NULL,
published integer,
cast_and_crew text COLLATE pg_catalog."default",
age_group text COLLATE pg_catalog."default",
country text COLLATE pg_catalog."default",
rating integer,
CONSTRAINT movie_data_pkey PRIMARY KEY (title, description)
)
TABLESPACE pg_default;
ALTER TABLE public.movie_data
OWNER to postgres;
【问题讨论】:
-
请显示带有所有约束的
CREATE TABLE语句。你没有主键吗? -
我已经有了表,我只想往里面插入数据。
-
我也只在标题和描述上设置了主键
-
带有
ON CONFLICT子句的完整INSERT语句是什么?使用此信息更新您的问题。
标签: python postgresql