[python] PySimpleGUI에서 데이터베이스 백업 및 복원 기능 사용하기

PySimpleGUI는 Python으로 GUI 애플리케이션을 만들기 위한 간단하고 사용하기 쉬운 라이브러리입니다. 이제 우리는 PySimpleGUI를 사용하여 데이터베이스 백업 및 복원 기능을 구현해보겠습니다.

데이터베이스 백업 기능 구현하기

필요한 모듈 설치하기

먼저 pip를 사용하여 필요한 모듈인 pysimpleguisqlite3를 설치해야 합니다.

pip install PySimpleGUI
pip install sqlite3

백업 기능 추가하기

다음은 PySimpleGUI를 사용하여 데이터베이스의 백업 기능을 추가하는 예시 코드입니다.

import PySimpleGUI as sg
import sqlite3
import shutil

def backup_database():
    # 데이터베이스 파일 경로 설정
    database_file = 'mydatabase.db'
    
    # 백업 파일 경로 설정
    backup_file = sg.popup_get_file('백업할 파일 위치 선택', save_as=True, file_types=(("DB 파일", "*.db"),))

    try:
        # 데이터베이스 파일을 백업 파일로 복사
        shutil.copy(database_file, backup_file)
        sg.popup('백업이 완료되었습니다.')
    except Exception as e:
        sg.popup_error(f'백업 중 오류가 발생했습니다: {str(e)}')

# GUI 디자인 및 이벤트 핸들링
layout = [[sg.Button('데이터베이스 백업')]]
window = sg.Window('데이터베이스 백업', layout)

while True:
    event, values = window.read()
    
    if event == sg.WINDOW_CLOSED:
        break
    elif event == '데이터베이스 백업':
        backup_database()

window.close()

위 예시 코드에서 backup_database() 함수는 데이터베이스 파일을 백업 파일로 복사하는 역할을 합니다. shutil.copy() 함수를 사용하여 파일을 복사하고, 발생하는 예외를 처리하여 백업 중 오류가 발생했을 경우에 대비하고 있습니다.

실행

위 코드를 실행하면 “데이터베이스 백업” 버튼이 있는 간단한 GUI 창이 열립니다. 버튼을 클릭하면 파일 선택 대화상자가 표시되고, 백업할 파일의 위치를 선택할 수 있습니다. 선택한 위치에 백업 파일이 생성되며, 백업이 완료되었다는 안내 메시지가 표시됩니다.

데이터베이스 복원 기능 구현하기

복원 기능 추가하기

이제 PySimpleGUI를 사용하여 데이터베이스의 복원 기능을 추가해보겠습니다.

import PySimpleGUI as sg
import sqlite3
import shutil

def restore_database():
    # 백업 파일 경로 선택
    backup_file = sg.popup_get_file('복원할 백업 파일 선택', file_types=(("DB 파일", "*.db"),))
    
    if backup_file:
        try:
            # 백업 파일을 데이터베이스 파일로 복사
            shutil.copy(backup_file, 'mydatabase.db')
            sg.popup('복원이 완료되었습니다.')
        except Exception as e:
            sg.popup_error(f'복원 중 오류가 발생했습니다: {str(e)}')

# GUI 디자인 및 이벤트 핸들링
layout = [[sg.Button('데이터베이스 복원')]]
window = sg.Window('데이터베이스 복원', layout)

while True:
    event, values = window.read()
    
    if event == sg.WINDOW_CLOSED:
        break
    elif event == '데이터베이스 복원':
        restore_database()

window.close()

위 예시 코드에서 restore_database() 함수는 백업 파일을 데이터베이스 파일로 복원하는 역할을 합니다. 선택한 백업 파일을 shutil.copy() 함수를 사용하여 데이터베이스 파일로 복사하며, 발생하는 예외를 처리하여 복원 중 오류가 발생했을 경우에 대비하고 있습니다.

실행

위 코드를 실행하면 “데이터베이스 복원” 버튼이 있는 간단한 GUI 창이 열립니다. 버튼을 클릭하면 파일 선택 대화상자가 표시되고, 복원할 백업 파일을 선택할 수 있습니다. 선택한 백업 파일이 데이터베이스 파일로 복사되며, 복원이 완료되었다는 안내 메시지가 표시됩니다.

결론

이렇게 PySimpleGUI를 사용하여 데이터베이스의 백업 및 복원 기능을 구현할 수 있습니다. PySimpleGUI의 간결하고 직관적인 API를 활용하여 사용자 친화적인 GUI 애플리케이션을 만들 수 있습니다.

참고 자료