[python] Peewee에서의 데이터 마이그레이션

Peewee는 Python에서 사용할 수 있는 가벼운 ORM(Object-Relational Mapping) 라이브러리입니다. 데이터베이스의 스키마 변경이나 데이터 마이그레이션은 개발 과정에서 자주 발생하는 작업인데, Peewee에서도 간편하게 이를 처리할 수 있습니다.

Peewee에서 제공하는 pw_migrate를 사용하여 데이터 마이그레이션을 수행할 수 있습니다. pw_migrate는 커맨드라인 도구이며, 데이터베이스에 적용할 마이그레이션 스크립트를 생성하고 실행하는 기능을 제공합니다.

설치

Peewee와 pw_migrate를 사용하기 위해서는 몇 가지 패키지를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

$ pip install peewee pw_migrate

마이그레이션 스크립트 생성

pw_migrate를 사용하여 마이그레이션 스크립트를 생성합니다. 다음 명령을 실행하여 migrations 디렉토리를 생성하고 초기 마이그레이션 스크립트를 생성합니다.

$ pw_migrate init

위 명령을 실행하면 migrations 디렉토리에 0001_initial.py 파일이 생성됩니다. 이 파일은 데이터베이스의 초기 스키마를 정의하는 스크립트입니다.

마이그레이션 스크립트 작성

migrations 디렉토리에 생성된 마이그레이션 스크립트는 Python 파일로 이루어져 있으며, 데이터베이스 스키마 변경 사항을 정의하는 클래스로 구성됩니다.

마이그레이션 스크립트를 작성할 때는 pw_migrate에서 제공하는 Migration 클래스를 상속받아서 사용합니다. 다음은 새로운 테이블을 추가하는 예시입니다.

from playhouse.migrate import *

class AddNewTable(Migration):
    def up(self):
        self.create_table('new_table', [
            # 테이블 열 정의
            Column('id', IntegerField(primary_key=True)),
            Column('name', CharField(max_length=100)),
            # ...
        ])

    def down(self):
        self.drop_table('new_table')

위 예시에서 up() 메소드는 스키마 변경을 수행하는 코드를 작성하고, down() 메소드는 up() 메소드에 의해 수행된 변경을 롤백하는 코드를 작성합니다.

마이그레이션 스크립트 실행

마이그레이션 스크립트를 생성하고 작성했다면, 이를 실행하여 실제로 스키마 변경을 수행할 수 있습니다. 다음 명령을 실행하여 마이그레이션 스크립트를 적용합니다.

$ pw_migrate migrate

위 명령을 실행하면 migrations 디렉토리의 스크립트들을 순서대로 실행하여 데이터베이스의 스키마를 변경합니다.

추가 기능

Peewee와 pw_migrate에는 많은 기능이 제공됩니다. 자세한 내용은 공식 문서를 참조하세요.