[python] Psycopg2를 사용하여 데이터베이스 테이블의 데이터를 백업 및 압축 해제하는 방법은?

개요

Psycopg2는 Python에서 PostgreSQL 데이터베이스에 접속하고 작업할 수 있는 라이브러리입니다. 이 라이브러리를 사용하여 PostgreSQL 데이터베이스 테이블의 데이터를 백업하고, 필요할 때 압축을 해제하는 방법에 대해 알아보겠습니다.

데이터 백업하기

데이터베이스 테이블의 데이터를 백업하려면 psycopg2.connect() 함수를 사용하여 데이터베이스에 연결한 후, SELECT 쿼리를 실행하여 백업할 데이터를 가져와야 합니다. 이후 가져온 데이터를 원하는 형식으로 저장하면 백업이 완료됩니다.

아래는 데이터베이스에 연결하고 SELECT 쿼리를 실행하여 데이터를 가져오는 예제 코드입니다.

import psycopg2

# 데이터베이스에 연결
conn = psycopg2.connect(
    host="your_host",
    database="your_database",
    user="your_username",
    password="your_password"
)

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

# SELECT 쿼리 실행
cur.execute("SELECT * FROM your_table")

# 데이터 가져오기
data = cur.fetchall()

# 연결 및 커서 닫기
cur.close()
conn.close()

위의 코드를 실행하면 데이터베이스 테이블의 전체 데이터가 data 변수에 저장됩니다. 이후 이 데이터를 원하는 형식으로 저장하면 데이터 백업이 완료됩니다.

데이터 압축 해제하기

데이터를 압축해제하려면 gzip 모듈을 사용하여 압축 파일을 오픈한 후, psycopg2.connect() 함수를 사용하여 데이터베이스에 연결한 후, 데이터를 로드해야 합니다.

아래는 압축 파일을 오픈하고 데이터를 데이터베이스에 로드하는 예제 코드입니다.

import gzip
import psycopg2

# 압축 해제할 파일 오픈
with gzip.open('your_backup_file.sql.gz', 'rb') as f:

    # 압축 해제된 데이터를 문자열로 디코딩
    data = f.read().decode('utf-8')

    # 데이터베이스에 연결
    conn = psycopg2.connect(
        host="your_host",
        database="your_database",
        user="your_username",
        password="your_password"
    )

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

    # 데이터 로드
    cur.execute(data)
    conn.commit()

    # 연결 및 커서 닫기
    cur.close()
    conn.close()

위의 코드를 실행하면 압축 해제된 데이터가 데이터베이스에 로드됩니다.

참고 자료