[python] FastAPI에서 데이터 베이스 마이그레이션 처리하기

FastAPI는 빠른 속도와 쉬운 개발을 제공하는 고성능 웹 프레임워크입니다. 데이터베이스 마이그레이션은 소프트웨어 버전 업데이트 또는 스키마 변경에 따라 데이터베이스 스키마를 업데이트하는 프로세스를 말합니다. 이번 글에서는 FastAPI에서 데이터베이스 마이그레이션을 처리하는 방법에 대해 알아보겠습니다.

1. Alembic을 사용한 마이그레이션 설정

먼저, 데이터베이스 마이그레이션을 위해 Alembic을 사용하도록 설정해야 합니다. Alembic은 SQLAlchemy 기반의 마이그레이션 도구로, 스키마 변경에 따라 자동으로 마이그레이션 스크립트를 생성하고 적용할 수 있습니다.

가상환경에서 다음 명령어를 실행하여 Alembic을 설치합니다.

pip install alembic sqlalchemy

그리고 다음과 같이 alembic.ini 파일을 생성합니다.

[alembic]
script_location = alembic
sqlalchemy.url = DATABASE_URL

[logging]
log_level = INFO

위 설정 파일에서 script_location은 마이그레이션 스크립트가 생성될 경로를 지정하는 옵션입니다. sqlalchemy.url은 데이터베이스 연결 URL을 설정하는 옵션입니다.

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

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

alembic init alembic

위 명령어를 실행하면 alembic 폴더가 생성되고, 그 안에 마이그레이션 스크립트와 관련된 파일들이 생성됩니다.

3. 모델 작성하기

FastAPI에서 사용하는 데이터베이스 모델을 작성합니다. 예를 들어, models.py 파일에 다음과 같이 모델을 정의합니다.

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, index=True)
    email = Column(String, unique=True, index=True)

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

모델을 작성한 후, 다음 명령어를 실행하여 마이그레이션 스크립트를 생성합니다.

alembic revision --autogenerate -m "create users table"

위 명령어를 실행하면 alembic/versions 폴더 안에 마이그레이션 스크립트 파일이 생성됩니다.

5. 마이그레이션 적용하기

마이그레이션 스크립트를 통해 데이터베이스 스키마를 업데이트하기 위해서는 다음 명령어를 실행합니다.

alembic upgrade head

위 명령어를 실행하면 마이그레이션 스크립트에 정의된 변경 사항이 데이터베이스에 적용됩니다.

6. 추가적인 마이그레이션

추가적인 마이그레이션을 진행해야 할 경우, 모델을 변경하고 다시 4단계부터 수행하여 새로운 마이그레이션 스크립트를 생성하고 적용합니다.

참고 자료