에듀테크 프로젝트 대시보드
Alembic 마이그레이션
모델을 바꿀 때마다 스키마 변경 스크립트를 버전 관리합니다. create_all 은 프로토타입까지만.
pip install alembic
cd /home/ubuntu/offset0xf/school
alembic init migrationsalembic.ini 와 migrations/ (env.py, versions/) 가 생성됩니다.
# migrations/env.py
from app.config import get_settings
from app.database import Base
import app.models # 모든 모델을 import 해야 autogenerate 가 인식
config.set_main_option("sqlalchemy.url", get_settings().database_url)
target_metadata = Base.metadataalembic init -t async migrations 로 async 템플릿 사용postgresql+psycopg://)을 따로 지정# 모델 변경 후 자동 생성
alembic revision --autogenerate -m "add posts.published flag"
# 생성된 migrations/versions/xxxx_*.py 를 반드시 눈으로 검토
alembic upgrade head # 최신까지 적용
alembic downgrade -1 # 한 단계 되돌리기
alembic current # 현재 리비전
alembic history --verboseop.execute("UPDATE ...")), Enum 값 추가cd /home/ubuntu/offset0xf/school
source venv/bin/activate
git pull # 코드 갱신
alembic upgrade head # 스키마 갱신
sudo systemctl restart fastapi-school다운타임을 피하려면 '컬럼 추가는 nullable 로 먼저 → 코드 배포 → 백필 → NOT NULL' 처럼 단계를 나눕니다.