Django Migration의 목적
- Django Model에 정의된 field, option, meta정보를 데이터베이스 테이블의 schema와 동기화하고, model의 변경사항을 버전으로 관리
Django Migration Workflow
-
makemigrations
- 모델과 해당 DB table의 schema를 동기화하기 위한 (변경내역) 데이터 생성
- DB table의 schema 버전은 DB의 migration table이 가르키고 있는 migrations file 버전을 통해 알 수 있다.
- 새로운 마이그레이션 파일은 dependency가 있는 migration 파일, table에 적용되어야 할 수정사항을 포함한다.
- postfix로 app_name을 추가하면 특정 app의 model에 대해서만 migration 파일을 생성할 수 있다.
-
migrate
- 생성한 migration파일을 통해 sql 명령을 생성하고, DB에 대해 명령을 수행한다.
- 생성되는 sql 명령은
sqlmigrate
를 통해 확인할 수 있다.
- migrate할 app_name, migration 파일을 지정할 수 있다.
- 최신 버전의 migration뿐만 아니라, 이전의 migration 버전으로 rollback도 가능하다.
-
showmigrations
- 각 app에 대해 migration 파일 적용 상황을 확인할 수 있다.