[파이썬] Psycopg2에서 Sequence 조회 및 조작

Python의 Psycopg2는 PostgreSQL 데이터베이스에 대한 Python DB-API 2.0 인터페이스를 제공하는 라이브러리입니다. Psycopg2를 사용하면 Python에서 PostgreSQL 데이터베이스와 상호 작용할 수 있습니다.

이번 블로그에서는 Psycopg2를 사용하여 PostgreSQL 시퀀스를 조회하고 조작하는 방법을 살펴보겠습니다. 시퀀스는 고유한 순차적인 값을 생성하기 위해 사용되는 객체입니다.

1. 시퀀스 조회

먼저, Psycopg2를 사용하여 PostgreSQL 데이터베이스에 연결합니다. 연결하는 방법은 이전 블로그에서 다루었으므로 생략하겠습니다.

다음으로, 시퀀스를 조회하는 SQL 쿼리를 작성합니다. 시퀀스의 이름은 대소문자를 구분하기 때문에 정확한 이름을 지정해야 합니다.

import psycopg2

# PostgreSQL 데이터베이스에 연결
conn = psycopg2.connect(database="mydatabase", user="myuser", password="mypassword", host="localhost", port="5432")

# 커서 생성
cursor = conn.cursor()

# 시퀀스 조회 쿼리 실행
cursor.execute("SELECT sequence_name FROM information_schema.sequences WHERE table_schema = 'public';")

# 조회 결과 가져오기
sequences = cursor.fetchall()

# 결과 출력
for sequence in sequences:
    print(sequence[0])

# 커넥션 종료
conn.close()

위의 코드는 “public” 스키마에 있는 모든 시퀀스의 이름을 가져와서 출력합니다.

2. 시퀀스 조작

이제 시퀀스를 조작하는 방법을 살펴보겠습니다. 시퀀스를 조작하기 위해서는 해당 시퀀스의 다음 값을 결정하고 업데이트해야 합니다.

import psycopg2

# PostgreSQL 데이터베이스에 연결
conn = psycopg2.connect(database="mydatabase", user="myuser", password="mypassword", host="localhost", port="5432")

# 커서 생성
cursor = conn.cursor()

# 시퀀스의 현재 값을 조회하는 쿼리 실행
cursor.execute("SELECT currval('my_sequence');")
current_value = cursor.fetchone()[0]

# 시퀀스의 다음 값을 결정
next_value = current_value + 1

# 시퀀스의 값을 업데이트하는 쿼리 실행
cursor.execute(f"SELECT setval('my_sequence', {next_value});")

# 변경된 시퀀스 값을 커밋
conn.commit()

# 커넥션 종료
conn.close()

위의 코드는 “my_sequence”라는 시퀀스의 현재 값을 조회한 후, 다음 값으로 업데이트합니다. 이후 변경된 값을 커밋하여 데이터베이스에 적용합니다.

Psycopg2를 사용하여 PostgreSQL 시퀀스를 조회하고 조작하는 방법에 대해 알아보았습니다. 시퀀스는 데이터베이스에서 고유한 식별자를 생성하는 데 유용한 도구입니다. Psycopg2를 통해 시퀀스를 조작하면 데이터베이스 작업에 편의성을 제공할 수 있습니다.