이미 데이터베이스에 존재하는 데이터를 중복해서 입력하지 않으려면 아래와 같이 "WHERE NOT EXISTS"를 사용하면 된다.
INSERT INTO {table_name} (col1, col2, col3)
SELECT val1, val2, val3
WHERE NOT EXISTS (
SELECT col1
FROM {table_name}
WHERE col1 = val1
)
col1의 값이 중복되지 않는 데이터에 대해서만 insert 하겠다는 SQL문 예시이다.
psycopg2를 사용해서 python에서 입력하는 경우, 다음과 같이 처리할 수 있다.
cursor = connection.cursor()
sql1 = f'''
INSERT INTO {table_name} (col1, col2, col3)
SELECT %s, %s, %s
WHERE NOT EXISTS (
SELECT col1
FROM {table_name}
WHERE col1 = %s
)
'''
record_to_insert = (val1, val2, val3, val1)
cursor.execute(sql1, record_to_insert)