Alembic
backend
2분 읽기Alembic
뭔가
- SQLAlchemy랑 같이 쓰는 DB 마이그레이션 도구
- Git이 코드 변경을 추적하듯, DB 스키마 변경 이력을 관리함
- 테이블 추가/컬럼 수정 등을 파일로 남겨서 팀원끼리 DB 상태 맞춤
기본 명령어
alembic revision --autogenerate -m "설명" # 변경 감지해서 마이그레이션 파일 생성
alembic upgrade head # 최신으로 적용
alembic downgrade -1 # 한 단계 롤백
alembic current # 현재 버전 확인
alembic history # 전체 이력
마이그레이션 파일 구조
def upgrade():
op.create_table('user',
sa.Column('id', sa.Integer(), primary_key=True),
sa.Column('name', sa.String(50)),
)
def downgrade():
op.drop_table('user')
upgrade(): 앞으로 적용downgrade(): 되돌리기
주의할 점
- autogenerate가 다 잡아주진 않음 (타입 변경, view 등은 못 감지) → 생성 후 파일 꼭 확인
- 팀 작업 시 동시에 마이그레이션 만들면 충돌 남 →
alembic merge heads로 해결 - DB URL은 환경변수로 분리해서 환경별로 다르게 설정
데이터 마이그레이션도 가능
스키마 변경뿐만 아니라 기존 데이터 변환도 파일 안에서 할 수 있음
def upgrade():
op.add_column('user', sa.Column('full_name', sa.String()))
op.execute("UPDATE user SET full_name = first_name || ' ' || last_name")