[python] ReportLab 데이터베이스 연동

ReportLab은 Python으로 PDF 문서를 생성하는 라이브러리입니다. 데이터베이스와 연동하여 동적으로 PDF를 생성하는 경우에 유용하게 사용될 수 있습니다. 이번 블로그 포스트에서는 ReportLab과 데이터베이스를 연동하는 방법에 대해 알아보겠습니다.

데이터베이스 설정

먼저, 데이터베이스에 연결하기 위해 Python에서 사용하는 데이터베이스 라이브러리를 설치해야 합니다. 예를 들어, SQLite 데이터베이스를 사용한다면 sqlite3 모듈을 설치해야 합니다.

pip install sqlite3

다음으로, 데이터베이스에 연결하고 쿼리를 실행할 수 있는 함수를 작성해야 합니다.

import sqlite3

def connect_database():
    conn = sqlite3.connect('database.db')
    cursor = conn.cursor()
    return conn, cursor

def execute_query(query):
    conn, cursor = connect_database()
    cursor.execute(query)
    result = cursor.fetchall()
    conn.close()
    return result

위의 함수에서는 SQLite 데이터베이스에 연결하고 SQL 쿼리를 실행하는 기능을 제공합니다. execute_query 함수를 사용하여 원하는 쿼리를 실행하고 결과를 얻을 수 있습니다.

ReportLab과 데이터베이스 연동하기

이제 ReportLab을 사용하여 데이터베이스와 연동하여 PDF를 생성하는 방법에 대해 알아보겠습니다. ReportLab의 SimpleDocTemplate 클래스를 사용하여 PDF 문서를 생성할 수 있습니다.

from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.styles import getSampleStyleSheet

def generate_pdf(data):
    doc = SimpleDocTemplate("output.pdf")
    styles = getSampleStyleSheet()

    elements = []
    for row in data:
        element = Paragraph(row[0], styles['Normal'])
        elements.append(element)

    doc.build(elements)

위의 코드에서는 generate_pdf 함수를 정의하고, 데이터베이스에서 얻은 데이터를 ReportLab의 요소로 변환하여 PDF 문서에 추가합니다.

결과 확인

쿼리를 실행하여 데이터베이스에서 얻은 결과를 ReportLab을 사용하여 PDF로 생성하는 예제입니다.

query = "SELECT name FROM employees"
result = execute_query(query)
generate_pdf(result)

위의 코드에서는 execute_query 함수를 사용하여 employees 테이블에서 이름을 가져오는 쿼리를 실행하고, generate_pdf 함수를 사용하여 결과를 PDF로 생성합니다.

이상으로 ReportLab과 데이터베이스를 연동하는 방법에 대해 알아보았습니다. 데이터베이스와의 연동을 통해 동적인 데이터를 PDF 문서에 포함시킬 수 있으며, ReportLab을 사용하여 다양한 스타일과 레이아웃을 갖는 PDF를 생성할 수 있습니다.

참고 자료