푸터 콘텐츠로 바로가기
PYTHON 도움말

psycopg2 (개발자를 위한 작동 방식)

psycopg2 라이브러리는 Python 프로그래밍 언어용으로 널리 사용되는 PostgreSQL 데이터베이스 어댑터입니다. 이 라이브러리는 효율성, 스레드 안전성, 그리고 Python DB API 2.0 사양의 완벽한 구현으로 잘 알려져 있습니다. 이제 그 기능을 살펴보고 몇 가지 코드 예제를 확인해 보겠습니다. 이 글 후반부에서는 Iron Software 에서 개발한 PDF 생성 라이브러리인 IronPDF 에 대해 알아보겠습니다.

Psycopg2 는 효율성과 보안성을 고려하여 설계되었으므로 멀티스레딩 환경이 많이 사용되는 애플리케이션에 적합합니다. 주요 특징은 다음과 같습니다.

  • 스레드 안전성: 여러 스레드가 동일한 연결을 공유할 수 있습니다. 이는 커서를 많이 생성하고 소멸시키는 멀티스레드 애플리케이션을 처리할 수 있는 기능입니다.
  • 클라이언트 측 및 서버 측 커서: 대규모 데이터 세트를 효율적으로 처리합니다.
  • 비동기 통신 및 알림: 비동기 작업을 지원합니다.
  • 복사 지원: 복사 대상 및 복사 대상 기능을 사용하여 데이터를 효율적으로 대량으로 로드할 수 있습니다.
  • 적응 시스템: Python 데이터 유형을 PostgreSQL 데이터 유형으로 자동 변환합니다. 패키지는 해당 PostgreSQL 데이터 유형으로 자동 변환합니다.
  • 유니코드 및 Python 3 호환성: 유니코드와 Python 3를 완벽하게 지원합니다.

설치

pip를 사용하여 psycopg2를 설치할 수 있습니다.

pip install psycopg2
pip install psycopg2
SHELL

또는 소스 패키지에 포함된 setup.py 파일을 로컬에서 사용할 수도 있습니다. 소스 패키지는 다음 소스 코드 저장소에서 다운로드할 수 있습니다.

python setup.py build
sudo python setup.py install
python setup.py build
sudo python setup.py install
SHELL

컴파일러나 외부 라이브러리가 필요 없는 독립 실행형 패키지를 원하시면 psycopg2-binary 패키지를 사용하실 수 있습니다.

pip install psycopg2-binary
pip install psycopg2-binary
SHELL

기본 사용법

다음은 psycopg2를 시작하는 데 도움이 되는 간단한 예제입니다.

데이터베이스에 연결하기

먼저 PostgreSQL 데이터베이스에 연결해야 합니다.

import psycopg2

# Connect to your PostgreSQL database
conn = psycopg2.connect(
    dbname="your_dbname",
    user="your_username",
    password="your_password",
    host="your_host",
    port="your_port"
)

# Create a cursor object
cur = conn.cursor()
import psycopg2

# Connect to your PostgreSQL database
conn = psycopg2.connect(
    dbname="your_dbname",
    user="your_username",
    password="your_password",
    host="your_host",
    port="your_port"
)

# Create a cursor object
cur = conn.cursor()
PYTHON

쿼리 실행

커서 객체를 사용하여 SQL 쿼리를 실행할 수 있습니다.

# Execute a query
cur.execute("SELECT * FROM your_table")

# Fetch all results
rows = cur.fetchall()

# Print the results
for row in rows:
    print(row)
# Execute a query
cur.execute("SELECT * FROM your_table")

# Fetch all results
rows = cur.fetchall()

# Print the results
for row in rows:
    print(row)
PYTHON

데이터 삽입

테이블에 데이터를 삽입하는 방법은 다음과 같습니다.

# Insert data into a table
cur.execute(
    "INSERT INTO your_table (column1, column2) VALUES (%s, %s)",
    ("value1", "value2")
)

# Commit the transaction
conn.commit()
# Insert data into a table
cur.execute(
    "INSERT INTO your_table (column1, column2) VALUES (%s, %s)",
    ("value1", "value2")
)

# Commit the transaction
conn.commit()
PYTHON

연결 종료

작업이 끝나면 커서와 연결을 닫는 것을 잊지 마세요.

# Close the cursor and connection
cur.close()
conn.close()
# Close the cursor and connection
cur.close()
conn.close()
PYTHON

고급 기능

대량 로딩을 위한 COPY 사용

COPY 명령어는 대량의 데이터를 불러오는 데 유용합니다.

# Use COPY to load data from a file
with open('data.csv', 'r') as f:
    cur.copy_from(f, 'your_table', sep=',')

conn.commit()
# Use COPY to load data from a file
with open('data.csv', 'r') as f:
    cur.copy_from(f, 'your_table', sep=',')

conn.commit()
PYTHON

비동기 알림

데이터베이스에서 발생하는 비동기 알림을 수신할 수 있습니다.

# Listen for notifications
cur.execute("LISTEN your_channel")

# Wait for a notification
conn.poll()

while conn.notifies:
    notify = conn.notifies.pop(0)
    print("Got NOTIFY:", notify.payload)
# Listen for notifications
cur.execute("LISTEN your_channel")

# Wait for a notification
conn.poll()

while conn.notifies:
    notify = conn.notifies.pop(0)
    print("Got NOTIFY:", notify.payload)
PYTHON

IronPDF 소개합니다

psycopg2 (개발자용 작동 방식): 그림 1 - IronPDF: Python PDF 라이브러리

IronPDF 는 HTML, CSS, 이미지 및 JavaScript 사용하여 PDF를 생성, 편집 및 서명하도록 설계된 강력한 Python 라이브러리입니다. 이 제품은 낮은 메모리 사용량으로 상업용 수준의 성능을 제공합니다. 주요 특징은 다음과 같습니다.

HTML을 PDF로 변환:

HTML 파일, HTML 문자열 및 URL을 PDF로 변환합니다. 예를 들어, Chrome PDF 렌더러를 사용하여 웹페이지를 PDF로 렌더링할 수 있습니다.

크로스 플랫폼 지원:

.NET Core, .NET Standard, .NET Framework 등 다양한 .NET 플랫폼과 호환됩니다. 이 프로그램은 윈도우, 리눅스, macOS를 지원합니다.

편집 및 서명:

속성을 설정하고, 암호 및 권한으로 보안을 강화하고, PDF에 디지털 서명을 적용하세요.

페이지 템플릿 및 설정:

머리글, 바닥글, 페이지 번호 및 조정 가능한 여백을 사용하여 PDF를 사용자 지정하세요. 반응형 레이아웃과 사용자 지정 용지 크기를 지원합니다.

표준 준수:

PDF/A 및 PDF/UA와 같은 PDF 표준을 준수합니다. 이 라이브러리는 UTF-8 문자 인코딩을 지원하며 이미지, CSS, 글꼴과 같은 자산을 처리합니다.

IronPDF 와 psycopg2를 사용하여 PDF 문서를 생성합니다.

import psycopg2
from ironpdf import *

# Apply your license key
License.LicenseKey = "Key"

# Connect to your local PostgreSQL database
conn = psycopg2.connect(
    dbname="demo",
    user="postgres",
    password="postgres",
    host="localhost",
    port="5432"
)

# Create a cursor object
cur = conn.cursor()

# Create the users table if it doesn't already exist
cur.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        age INTEGER
    )
''')

# Commit the transaction
conn.commit()

# Define the SQL statement for inserting data into the table
insert_query = '''
    INSERT INTO users (id, name, age)
    VALUES (%s, %s, %s)
'''

# Data to be inserted
user_data = [
    (1, 'John', 25),
    (2, 'Smith', 35),
    (3, 'Tom', 29)
]

# Insert data into the table
for user in user_data:
    cur.execute(insert_query, user)

# Commit the transaction
conn.commit()

# Execute a query to retrieve data from the users table
cur.execute("SELECT * FROM users")

# Fetch all results
rows = cur.fetchall()

# Initialize PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML content
content = "<h1>Awesome Iron PDF with psycopg2</h1>"
content += "<p>Table data:</p>"
for row in rows:
    print(row)
    content += f"<p>{row}</p>"

# Close the cursor and connection
cur.close()
conn.close()

# Render HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf.SaveAs("Demopsycopg2.pdf")
import psycopg2
from ironpdf import *

# Apply your license key
License.LicenseKey = "Key"

# Connect to your local PostgreSQL database
conn = psycopg2.connect(
    dbname="demo",
    user="postgres",
    password="postgres",
    host="localhost",
    port="5432"
)

# Create a cursor object
cur = conn.cursor()

# Create the users table if it doesn't already exist
cur.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        age INTEGER
    )
''')

# Commit the transaction
conn.commit()

# Define the SQL statement for inserting data into the table
insert_query = '''
    INSERT INTO users (id, name, age)
    VALUES (%s, %s, %s)
'''

# Data to be inserted
user_data = [
    (1, 'John', 25),
    (2, 'Smith', 35),
    (3, 'Tom', 29)
]

# Insert data into the table
for user in user_data:
    cur.execute(insert_query, user)

# Commit the transaction
conn.commit()

# Execute a query to retrieve data from the users table
cur.execute("SELECT * FROM users")

# Fetch all results
rows = cur.fetchall()

# Initialize PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML content
content = "<h1>Awesome Iron PDF with psycopg2</h1>"
content += "<p>Table data:</p>"
for row in rows:
    print(row)
    content += f"<p>{row}</p>"

# Close the cursor and connection
cur.close()
conn.close()

# Render HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf.SaveAs("Demopsycopg2.pdf")
PYTHON

코드 설명

이 스크립트는 psycopg2를 사용하여 PostgreSQL 데이터베이스와 상호 작용하고 데이터 조작(생성, 삽입, 검색) 및 문서 생성을 위한 IronPDF와의 통합을 시연합니다.

  1. 데이터베이스 연결: 사용자 인증 및 데이터베이스 호스트 세부 정보를 지정하여 psycopg2을 사용하여 "demo"라는 로컬 PostgreSQL 데이터베이스에 연결합니다.
  2. 테이블 생성: users이라는 테이블을 이미 존재하지 않는 경우 생성하기 위한 SQL 문을 정의하고 실행합니다. 테이블에는 id (정수, 기본 키), name (텍스트, 널이 아님), age (정수) 열이 있습니다.
  3. 데이터 삽입: 매개변수화된 쿼리(user_data)를 사용하여 users 테이블에 데이터 행을 삽입합니다. 각 튜플은 id, name, age에 대한 값을 포함합니다.
  4. 트랜잭션 관리: 테이블 생성 및 데이터 삽입 후 트랜잭션을 커밋하여 변경 사항이 데이터베이스에 저장되도록 합니다.
  5. 데이터 검색: users 테이블에서 모든 행(SELECT * FROM users)을 가져오기 위한 SELECT 쿼리를 실행하고 결과(rows)를 검색합니다.

  6. PDF 생성: HTML 콘텐츠에서 PDF 문서를 생성하기 위해 IronPDF를 사용합니다. HTML 콘텐츠에는 제목 및 users 테이블에서 가져온 데이터의 서식이 지정된 표현이 포함됩니다.
  7. 파일 저장: 생성된 PDF 문서를 현재 디렉터리에 "Demopsycopg2.pdf"라는 이름으로 저장합니다.
  8. 연결 종료: 리소스를 해제하고 적절한 정리를 보장하기 위해 데이터베이스 커서(cur) 및 데이터베이스 연결(conn)을 종료합니다.

예외 처리를 위해 스크립트를 try-catch 블록으로 감싸서 쿼리 또는 연결 문제가 발생할 경우 모든 오류 작업이 처리되도록 하십시오.

출력

psycopg2 (개발자용 작동 방식): 그림 2 - 예제 콘솔 출력

PDF

psycopg2 (개발자용 작동 방식): 그림 3 - psycopg2를 활용하여 데이터를 저장하고 검색하면서 IronPDF가 PDF 보고서를 생성하는 예제 출력

IronPDF 라이선스

IronPDF Python 라이선스 키로 실행됩니다. IronPDF for Python은 사용자가 구매 전에 다양한 기능을 테스트해 볼 수 있도록 무료 평가판 라이선스 키를 제공합니다.

IronPDF 패키지를 사용하기 전에 스크립트 시작 부분에 라이선스 키를 배치하십시오.

from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
PYTHON

결론

Psycopg2는 Python에서 PostgreSQL 데이터베이스와 상호 작용하기 위한 강력하고 유연한 라이브러리입니다. 다양한 기능과 효율적인 설계 덕분에 간단하고 복잡한 데이터베이스 작업 모두에 탁월한 선택입니다. IronPDF 는 Python 애플리케이션에서 PDF 문서를 직접 생성, 조작 및 렌더링할 수 있도록 지원하는 강력한 Python 패키지 및 라이브러리입니다. 이 소프트웨어는 HTML 콘텐츠에서 PDF를 생성하는 데 필요한 포괄적인 기능을 제공하며 기존 웹 기술과 원활하게 통합됩니다. IronPDF 사용하면 개발자는 보고서, 송장 및 기타 문서 생성을 효율적으로 자동화하여 생산성과 사용자 경험을 향상시킬 수 있습니다. 이 소프트웨어는 대화형 PDF 양식, 텍스트 추출, PDF 병합 및 분할, 비밀번호 보호와 같은 보안 기능 추가 등의 기능을 제공합니다. IronPDF는 다재다능하고 사용하기 쉬워 Python 프로젝트에서 PDF 생성 및 조작 기능을 구현하려는 개발자에게 유용한 도구입니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해