[python] SQLAlchemy에서 데이터베이스 마이그레이션을 어떻게 수행하나요?

SQLAlchemy는 Python에서 널리 사용되는 ORM(Object-Relational Mapping) 라이브러리입니다. 데이터베이스 스키마 변경이나 버전 업데이트를 수행할 때, SQLAlchemy를 이용하여 데이터베이스 마이그레이션을 간편하게 수행할 수 있습니다.

SQLAlchemy에는 Alembic이라는 데이터베이스 마이그레이션 도구가 내장되어 있습니다. Alembic은 SQLAlchemy의 확장 프로젝트로, 데이터베이스 스키마 변경을 추적하고 관리하는 도구입니다. 아래는 SQLAlchemy와 Alembic을 사용하여 데이터베이스 마이그레이션을 수행하는 과정을 설명한 예제 코드입니다.

1. 필요한 패키지 설치

먼저 필요한 패키지를 설치해야 합니다. SQLAlchemy와 Alembic을 설치하기 위해 다음 명령어를 사용하세요:

pip install SQLAlchemy Alembic

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

다음으로 Alembic을 사용하여 마이그레이션 스크립트를 생성합니다. 버전 관리 및 초기 스키마 설정을 위해 아래 명령어를 실행하세요:

alembic init migrations

위 명령어를 실행하면 migrations라는 이름의 디렉토리가 생성되며, 이 디렉토리에 마이그레이션과 관련된 파일들이 저장됩니다.

3. 스키마 변경 추적

마이그레이션을 위해 SQLAlchemy의 Table 객체를 사용하여 스키마 변경을 추적합니다. 이를 위해 env.py 파일을 열고 run_migrations_online() 함수에서 다음과 같은 코드를 추가합니다:

from sqlalchemy import Table, Column, String, Integer

metadata = sqlalchemy.MetaData()

# 예시 테이블 정의
users = Table(
    'users',
    metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String(50)),
    Column('email', String(50))
)

위 예제에서는 “users”라는 테이블을 정의하고, 이를 metadata 객체에 추가합니다. 이렇게 추가된 테이블 객체들은 Alembic에 의해 마이그레이션 스크립트로 추적됩니다.

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

마이그레이션 스크립트를 생성하기 위해 다음 명령어를 실행합니다:

alembic revision --autogenerate -m "스키마 변경 설명"

위 명령어를 실행하면 migrations 디렉토리에서 새로운 마이그레이션 스크립트 파일이 생성됩니다. 이 파일은 upgrade()downgrade() 함수로 이루어져 있으며, 각각 데이터베이스의 스키마를 업그레이드하거나 다운그레이드하는 로직을 담고 있습니다.

5. 마이그레이션 적용

마이그레이션 스크립트를 실제로 적용하기 위해 다음 명령어를 실행합니다:

alembic upgrade head

위 명령어를 실행하면 versions 디렉토리에 있는 모든 마이그레이션 스크립트들이 순서대로 실행되어 데이터베이스의 스키마를 변경합니다. 이후 데이터베이스는 최신 버전의 스키마를 가지게 됩니다.

데이터베이스 마이그레이션은 스키마 변경을 체계적이고 안전하게 관리하기 위한 중요한 작업입니다. SQLAlchemy와 Alembic을 이용하면 마이그레이션 프로세스를 쉽게 구축하고 유지할 수 있습니다. 상세한 내용은 SQLAlchemy 및 Alembic 공식 문서를 참조하시기 바랍니다.