[python] cx_Freeze를 사용하여 작성한 실행 파일의 데이터베이스 연동 방법

cx_Freeze는 Python 프로그램을 실행 파일로 변환해주는 도구로, 실행 파일을 생성할 때 데이터베이스와의 연동이 필요한 경우가 많습니다. 이번 블로그 포스트에서는 cx_Freeze와 SQLite 데이터베이스를 연동하는 방법에 대해 알아보겠습니다.

1. cx_Freeze의 설치

먼저, cx_Freeze를 설치해야 합니다. 다음 명령을 사용하여 pip를 통해 설치할 수 있습니다.

$ pip install cx_Freeze

2. 프로젝트 구조 설정

다음으로, 프로젝트 디렉토리 내에 다음과 같은 구조를 설정해야 합니다.

project/
    ├── src/
    │   ├── main.py
    │   └── database.py
    └── setup.py

3. database.py 작성

database.py 파일을 열고, 다음과 같이 SQLite 데이터베이스와의 연동 코드를 작성합니다.

import sqlite3

def connect():
    connection = sqlite3.connect("database.db")
    cursor = connection.cursor()
    return connection, cursor

위 코드는 database.db라는 이름의 SQLite 데이터베이스에 연결하는 함수를 정의한 것입니다.

4. main.py 작성

main.py 파일을 열고, 다음과 같이 데이터베이스와의 연동 코드를 작성합니다.

import database

def main():
    connection, cursor = database.connect()
    
    # 데이터베이스 쿼리 실행
    cursor.execute("SELECT * FROM users")
    rows = cursor.fetchall()
    
    for row in rows:
        print(row)
    
    # 연결 종료
    connection.close()

if __name__ == "__main__":
    main()

위 코드는 database.py에서 정의한 connect() 함수를 사용하여 데이터베이스에 연결한 다음, 사용자 테이블의 모든 데이터를 출력하는 예제입니다.

5. setup.py 작성

이제 setup.py 파일을 열고, 다음과 같이 실행 파일을 생성하는 설정을 작성합니다.

import sys
from cx_Freeze import setup, Executable

build_exe_options = {"packages": ["sqlite3"], "include_files": ["database.db"]}

setup(
    name="MyApp",
    version="1.0",
    description="My Application",
    options={"build_exe": build_exe_options},
    executables=[Executable("main.py")]
)

위 코드는 build_exe_options 변수를 통해 SQLite3 패키지와 database.db 파일을 포함시키도록 설정한 다음, setup() 함수를 호출하여 실행 파일을 생성합니다.

실행 파일 생성하기

이제 터미널에서 다음 명령을 사용하여 실행 파일을 생성할 수 있습니다.

$ python setup.py build

위 명령을 실행하면 build 폴더 내에 실행 파일이 생성됩니다.

축하합니다! 이제 cx_Freeze와 SQLite 데이터베이스를 함께 사용하는 실행 파일을 생성할 수 있습니다.