[파이썬] Psycopg2에서 Domain types 처리

소개

Psycopg2는 Python에서 PostgreSQL 데이터베이스에 접속하기 위한 가장 일반적으로 사용되는 라이브러리입니다. 이 라이브러리는 다양한 기능을 제공하며, PostgreSQL의 도메인 타입에 대한 처리도 가능합니다.

이 블로그 게시물에서는 Psycopg2를 사용하여 Python에서 PostgreSQL의 도메인 타입을 처리하는 방법에 대해 알아보겠습니다.

도메인 타입이란?

PostgreSQL에서 도메인은 사용자 정의 데이터 타입을 정의하는 기능입니다. 도메인을 사용하면 데이터베이스에서 사용할 수 있는 특정 데이터 집합을 정의할 수 있습니다. 도메인은 데이터의 유효성을 확인하고, 데이터의 일관성을 유지하는 데 도움이 됩니다.

예를 들어, “이름”이라는 도메인을 정의하여 데이터베이스에서 저장될 수 있는 이름의 형식과 길이를 제한할 수 있습니다.

Psycopg2에서 도메인 타입 사용하기

Psycopg2는 PostgreSQL의 도메인 타입을 Python의 데이터 타입으로 자동 변환합니다. 이를 통해 도메인 타입에 대한 추가적인 처리나 변환 없이도 데이터베이스와 소통할 수 있습니다.

다음은 Psycopg2를 사용하여 도메인 타입을 처리하는 간단한 예제입니다.

import psycopg2
from psycopg2 import sql

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

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

# 새로운 도메인 타입 생성
cur.execute(sql.SQL("CREATE DOMAIN mydomain AS TEXT"))

# 도메인 타입을 사용하는 테이블 생성
cur.execute(sql.SQL("CREATE TABLE mytable (id SERIAL PRIMARY KEY, name mydomain)"))

# 도메인 타입 사용 예제
cur.execute(sql.SQL("INSERT INTO mytable (name) VALUES (%s)"), ('John',))

# 커밋
conn.commit()

# 결과 조회
cur.execute(sql.SQL("SELECT name FROM mytable"))
result = cur.fetchall()
for row in result:
    print(row[0])

# 연결 종료
cur.close()
conn.close()

이 예제에서는 Psycopg2를 사용하여 PostgreSQL 데이터베이스에 연결한 후, “mytable”이라는 테이블을 생성하고 “mydomain”이라는 도메인 타입을 만듭니다. 그런 다음 도메인 타입을 사용하여 데이터를 삽입하고 조회하는 예제를 보여줍니다.

결론

이 블로그 게시물에서는 Psycopg2를 사용하여 Python에서 PostgreSQL의 도메인 타입을 처리하는 방법에 대해 알아보았습니다. Psycopg2를 사용하면 PostgreSQL의 도메인 타입을 Python의 데이터 타입으로 자동 변환할 수 있으므로, 데이터베이스와의 상호작용을 더욱 효율적으로 처리할 수 있습니다.