-
[PostgreSQL]psycopg2.errors.InvalidColumnReference 오류DB/기타 2022. 8. 23. 15:31반응형
파이썬의 psycopg2 라이브러리를 사용하면서 upsert 하려고 할때 발생했다.
psycopg2.errors.InvalidColumnReference : there is no unique or exclusion constraint matching the ON CONFLICT specification
해결
수정 전 코드
insert_query = """insert into test_table (col1, col2, col3) values %s ON CONFLICT (col2, col3) DO UPDATE SET (col2, col3) = (excluded.col2, excluded.col3) """ pg_ext.execute_values(pg_cursor, insert_query, arr)
이런식의 쿼리였는데, 사실 conflict 부분에는 충돌 나는 키를 넣어야 한다. 충돌 나는 키는 primary key로 설정되어 있는 col1 이었는데, 충돌 나는 키 말고 다른 걸 넣어놔서 안되었음. 그래서 코드를 수정.
수정 후 코드
insert_query = """insert into test_table (col1, col2, col3) values %s ON CONFLICT (col1) DO UPDATE SET (col2, col3) = (excluded.col2, excluded.col3) """ pg_ext.execute_values(pg_cursor, insert_query, arr)
해결 완료!
PS. excluded를 쓰면 SET 뒤에다가 실제값을 넣지 않아도 된다. 충돌난 데이터에서 해당하는 데이터를 가져오기 때문에, 쓰면 편하다.
반응형'DB > 기타' 카테고리의 다른 글