Django에서 Migration(마이그레이션) 이란
모델(Model)의 변경 이력을 관리하고,
그 변경을 데이터베이스(DB)에 반영하는 시스템입니다.
모델이 바뀔 때마다
Django는 그 변화를 기록해 두었다가
필요한 시점에 DB에 적용합니다.
1. Migration을 왜 사용할까?
데이터 구조는 계속 바뀝니다.
- 필드 추가
- 필드 삭제
- 타입 변경
이걸 SQL로 직접 관리하면 매우 위험합니다.
그래서 Django는 ORM 기반의 Migration 시스템을 제공합니다.
Migration =
DB 변경 이력을 차곡차곡 쌓아두는 설계도
2. Django Migration 전체 흐름
모델 작성/수정
↓
makemigrations (변경 사항 기록)
↓
migrate (DB에 실제 반영)
이 흐름은 항상 동일합니다.
3. makemigrations
“변경 이력 만들기”
python manage.py makemigrations
- models.py의 변경 사항을 감지
- 마이그레이션 파일 생성
- 아직 DB에는 반영 ❌
foods/migrations/0001_initial.py
“이런 테이블을 만들면 됩니다”라는 설계도 생성 단계
4. migrate
“DB에 실제 적용하기”
python manage.py migrate
- 생성된 마이그레이션을 DB에 적용
- 테이블 생성 / 컬럼 변경 수행
Applying foods.0001_initial... OK
이때 실제 DB 구조가 바뀝니다.
5. showmigrations
“적용 상태 확인하기”
python manage.py showmigrations
출력 예시:
foods
[X] 0001_initial
- [X] : 이미 적용됨
- [ ] : 아직 적용 안 됨
프로젝트 전체 마이그레이션 상태를 한눈에 확인할 수 있습니다.
6. sqlmigrate
“실제 SQL 확인하기”
python manage.py sqlmigrate foods 0001
- 해당 마이그레이션이
- 어떤 SQL로 변환되는지 출력
ORM이 실제로 어떤 SQL을 실행하는지
확인하고 싶을 때 매우 유용합니다.
7. 정리하면
- Migration은 모델 변경 이력 관리 시스템
- makemigrations → 설계도 생성
- migrate → DB 반영
- showmigrations → 상태 확인
- sqlmigrate → 실제 SQL 확인
모델을 바꿨다면
반드시 migration을 거쳐야 DB가 바뀐다
Django Migration은
모델 변경을 안전하게 DB에 반영하기 위한
Django만의 버전 관리 시스템이다
'Django 프론트& 백엔드 개발' 카테고리의 다른 글
| [Model] ORM 기본 조회 정리 (get / filter / order_by) (0) | 2026.01.04 |
|---|---|
| [Model] Django Shell로 데이터 직접 다뤄보기 (조회 & 추가) (0) | 2026.01.04 |
| [Model] 데이터 모델링과 마이그레이션 흐름 정리 (0) | 2026.01.04 |
| URL, View, Template의 관계 정리 (0) | 2026.01.04 |
| Django의 get_static_prefix 개념 (0) | 2026.01.04 |