백엔드 기초집: 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.py의 Base.metadata.create_all(...)은 제거합니다.
5. 코드가 동작하는 이유
target_metadata가 현재 모델 schema를 Alembic에 제공합니다. autogenerate가 DB와 비교해 migration 초안을 만들고 upgrade head가 아직 적용하지 않은 revision을 순서대로 실행합니다. Alembic의 version 테이블이 현재 revision을 기록합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2데이터베이스 마이그레이션 개념과 Alembic 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
20강. 데이터베이스 마이그레이션 개념과 Alembic 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.