Tiny Finger Point Hand With Heart
본문 바로가기
Python/Django

[Django] Migrations & Migrate

by yoondii 2023. 1. 30.
728x90
반응형

 

모델을 작성하고 나면 꼭 해줘야하는 것이 있는데, 그것은 바로 마이그레이션이다.

마이그레이션(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 [앱이름][마이그레이션의 번호]

이렇게 반영된 모델의 이름과 내용들이 나오는 것을 볼 수 있다.

 

더 알고싶다면 공식문서 참고!

https://docs.djangoproject.com/en/2.2/topics/migrations/

728x90
반응형

'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

댓글