본문으로 건너뛰기
백엔드 기초집: Python FastAPILESSON 20

데이터베이스 마이그레이션 개념과 Alembic

난이도초급
예상 시간35분
선수지식이전 강의

20강. 데이터베이스 마이그레이션 개념과 Alembic

1. 이번 강의에서 해결할 문제

테이블 모델이 바뀔 때 DB 파일을 삭제하면 기존 데이터가 사라집니다. schema 변경을 순서가 있는 코드로 관리합니다.

2. 학습 목표

3. 핵심 개념

Alembic revision은 schema를 다음 상태로 바꾸는 upgrade와 되돌리는 downgrade 함수입니다. --autogenerate는 metadata와 DB를 비교해 초안을 만들 뿐 완전한 판단을 대신하지 않으므로 파일을 반드시 검토합니다. 앱 시작 시 create_all 대신 배포 전에 alembic upgrade head를 실행합니다.

4. 단계별 코드 예시

파일 경로: game-ranking-api/alembic/env.py의 핵심 수정

alembic/env.py
from alembic import context

from app.config import settings
from app.database import Base
import app.models

config = context.config
config.set_main_option("sqlalchemy.url", settings.database_url.replace("%", "%%"))
target_metadata = Base.metadata

파일 경로: game-ranking-api/app/models/record.py에 추가

app/models/record.py
from sqlalchemy import Text

# GameRecord 클래스 안에 추가
note: Mapped[str | None] = mapped_column(Text, nullable=True)

실행 위치: game-ranking-api/

alembic init alembic
alembic revision --autogenerate -m "create users and game records"
alembic upgrade head
alembic current
alembic history
alembic check

app/main.pyBase.metadata.create_all(...)은 제거합니다.

5. 코드가 동작하는 이유

target_metadata가 현재 모델 schema를 Alembic에 제공합니다. autogenerate가 DB와 비교해 migration 초안을 만들고 upgrade head가 아직 적용하지 않은 revision을 순서대로 실행합니다. Alembic의 version 테이블이 현재 revision을 기록합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

데이터베이스 마이그레이션 개념과 Alembic 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“데이터베이스 마이그레이션 개념과 Alembic” 실습 결과를 해석하는 올바른 기준은 무엇인가요?
  2. 문제 2‘운영 앱 시작마다 migration을 동시에 실행합니다.’ 상태에 관한 “데이터베이스 마이그레이션 개념과 Alembic” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

20강. 데이터베이스 마이그레이션 개념과 Alembic 미완료 상태