모델을 작성하고 나면 꼭 해줘야하는 것이 있는데, 그것은 바로 마이그레이션이다.
마이그레이션(Migration)은 모델(Model)의 변경 사항 즉 Django 프로젝트의 데이터 구조 변경 사항을 관리하기 위한 Django만의 관리 방법이다.
변경될 때마다 히스토리를 하나씩 만들어 두고 마치 블럭을 갈아 끼우듯 생성한 히스토리를 실제 데이터베이스에 반영하는 것.
그리고 이 모든 과정은 Django의 ORM(Object-Relational Mapping)을 통해 진행된다.
python manage.py makemigrations
python manage.py migrate
makemigrations
모델의 변경 사항을 인식해서 새로운 마이그레이션을 만든다.
이때 마이그레이션은 각 앱 디렉토리 내 migrations 디렉토리 안쪽에 생성된다.
migrate
생성된 최신 버전의 마이그레이션을 데이터베이스에 반영한다.
만약 이전 마이그레이션으로 되돌리고 싶다면 python manage.py migrate {앱 이름} {되돌릴 마이그레이션 번호}를 사용할 수 있다.
터미널에 입력하면 이렇게 뜨는 것을 볼 수 있다.
showmigrations
현재 django 프로젝트의 모든 마이그레이션과 반영 상태를 나타낸다.
만약 특정 앱에 대한 것만 보고 싶다면 python manage.py showmigrations {앱 이름}을 사용할 수 있다.
현재 생성되어 있는 마이그레이션 목록을 보려면
python manage.py showmigrations
를 입력하면 된다.
[x]는 이미 장고에 반영이 된것을 의미한다.
sqlmigrate
인수로 넘겨준 마이그레이션이 ORM을 통해 변경된 SQL문을 출력한다.
sqlmigrate를 통해 모델이 의도한 대로 SQL문으로 변경되어 데이터베이스에 반영되었는지 확인할 수 있다.
이렇게 반영된 파일이 어떻게 ORM을 통해서 SQL로 변환되었는지 보려면 이 코드를 입력해서 보면 된다.
python manage.py sqlmigrate [앱이름][마이그레이션의 번호]
이렇게 반영된 모델의 이름과 내용들이 나오는 것을 볼 수 있다.
더 알고싶다면 공식문서 참고!
'Python > Django' 카테고리의 다른 글
[Django]. CRUD 더 알아보기 (0) | 2023.01.30 |
---|---|
[Django] Model Field (0) | 2023.01.30 |
[Django] 상태 코드(Status Code) (0) | 2023.01.30 |
[Django] Template Language (0) | 2023.01.29 |
[Django] render( )함수 (0) | 2023.01.29 |
댓글