YUYANE

Django / migrations을 하는 이유 본문

Framework/DJANGO

Django / migrations을 하는 이유

YUYA 2021. 2. 20. 10:39

학습 강의

nomadcoders.co/airbnb-clone/lectures/868

 

 

지난 번 models.py 포스팅(1y9u9j2in.tistory.com/178)에서 데이터에 변형이 있을 경우에 migration 작업을 해줘야 한다고 잠깐 언급했었다. 오늘은 장고 migration에 대해 배워보자!

 

 

 

모델에서 데이터에 변화가 생겼는데(필드의 생성/수정/삭제 등), migration 작업을 하지 않은 채 서버를 동작하면 위와 같은 오류가 발생한다. 데이터베이스에서 변화된 데이터의 모형이 동기화되지 않았기 때문이다. 

 

 

 

장고와 SQL

 

네이버 영어사전

 

 

장고는 데이터베이스로 SQL을 사용한다. 그런데, SQL은 데이터에 변화가 일어나도 스스로 알아차리지 못한다.

그래서 장고가 migrations 작업을 통해 모델에서 일어난 데이터의 변화를 데이터 베이스인 SQL에게 전달하는 것이다. 

 

SQL 언어를 사용하지 않아도 장고가 중간 매개자 역할을 함으로써 데이터 동기화를 해준다는 점이 장고의 큰 장점이기도 하다!

 

 

migration 방법

 

$ python manage.py makemigrations

 

위의 구문을 실행하면, 수정 된 models이 스캔/비교되어 기존의 migrations 파일에 새롭게 생성 된 migrations set이 작성된다. (만약에 migrations에 특정한 명칭을 부여하고 싶다면, 'makemigrations --name'을 사용하면 된다.)

 

$ python manage.py migrate

 

새로운 migrations 파일이 생성된 후, 데이터베이스에 생성된 migrations 파일을 적용시키면 완성! 아래와 같이 데이터베이스가 업데이트 된 데이터 정보를 sql 언어로 갖게 된다. (처음으로 하는 migration이라면 db.sqlite3 파일이 새롭게 생성될 것이다.)

 

 

 

 

 

참고

docs.djangoproject.com/en/3.1/topics/migrations/

Comments