[python] Peewee와 데이터베이스 마이그레이션 도구

소개

Peewee는 Python에서 가벼운 ORM(Object-Relational Mapping) 라이브러리입니다. ORM은 객체 지향 프로그래밍과 관계형 데이터베이스 간의 상호 작용을 도와주는 도구입니다. Peewee는 간단한 문법과 쉬운 사용법으로 개발자들에게 인기가 많습니다.

데이터베이스 스키마 또는 모델의 변경이 필요한 경우, 데이터베이스 마이그레이션 도구를 사용하여 이를 손쉽게 처리할 수 있습니다. 이 글에서는 Peewee와 함께 사용할 수 있는 몇 가지 데이터베이스 마이그레이션 도구에 대해 알아보겠습니다.

Alembic

Alembic은 SQLAlchemy와 같이 사용할 수 있는 데이터베이스 마이그레이션 도구입니다. Peewee와 함께 사용하려면, Alembic을 SQLAlchemy와 함께 설치해야 합니다.

설치

pip install alembic

사용법

  1. 마이그레이션 스크립트 생성
     alembic init migrations
    
  2. alembic.ini 파일을 열고 sqlalchemy.url을 Peewee 데이터베이스 URL로 설정합니다.
    sqlalchemy.url = sqlite:///path/to/database.db
    
  3. env.py 스크립트를 열고 run_migrations_online 함수를 수정해 Peewee의 데이터베이스 연결을 설정합니다.
    from your_peewee_module import database
    
    # ...
    
    def run_migrations_online():
        # ...
    
        context.configure(connection=database.connection())
    
        # ...
    
  4. 마이그레이션 스크립트를 생성하고 데이터베이스를 업데이트합니다.
    alembic revision --autogenerate -m "create table"
    
    alembic upgrade head
    

SchemaEvolution

SchemaEvolution은 Peewee와 함께 사용할 수 있는 간단한 스키마 마이그레이션 도구입니다. 기본적으로 SQLite를 지원하지만, 다른 데이터베이스도 사용할 수 있습니다.

설치

pip install schema-evolution

사용법

  1. 마이그레이션 스크립트 생성
    schema-evolution init migration
    
  2. migration.py 파일을 열고 스키마 변경 작업을 추가합니다. 예를 들어, 새로운 테이블을 생성하는 작업은 다음과 같이 정의할 수 있습니다:
    # ...
    
    migration.add_table('new_table', [
        ('id', 'integer', 'primary_key', 'autoincrement'),
        ('name', 'text', 'not_null'),
    ])
    
    # ...
    
  3. 데이터베이스를 업데이트합니다.
    schema-evolution migrate
    

도입

Peewee와 함께 사용할 수 있는 데이터베이스 마이그레이션 도구로는 Alembic와 SchemaEvolution이 있습니다. 각각의 도구는 강력한 기능을 제공하며, 데이터베이스 스키마 변경을 쉽게 관리할 수 있습니다. 선택한 도구는 프로젝트 요구사항과 개발자의 선호도에 따라 결정할 수 있습니다.

자세한 내용은 도구의 공식 문서를 참조하시기 바랍니다.

참고 자료