차근차근 생활 & 코딩

[DJANGO] 장고 마이그레이션(migrate, makemigrations) - 데이터베이스 변경사항 반영하기 본문

IT/DJANGO(장고)

[DJANGO] 장고 마이그레이션(migrate, makemigrations) - 데이터베이스 변경사항 반영하기

ssilook 2021. 8. 26. 19:19
반응형

이번 시간에는 Django(장고)의 마이그레이션 기능에 대해 알려드리도록 하겠습니다.

 

마이그레이션(migration)이란?

 : 테이블 및 필드의 생성, 삭제, 변경 등과 같이 데이터베이스에 대한 변경사항을 알려주는 것이라고 합니다.

 

데이터베이스 TABLE 신규 생성, 테이블 변경 등 이를 데이터베이스에 실제로 반영해주는 작업을 해야 합니다.

 

Django(장고)는 이러한 작업을 우선적으로 해주어 사용자의 편의성을 도모한 것 같습니다.

 

하지만 처음 접하는 입장에서 보면 도대체 무슨 말을 하는지 알 수 없습니다.

 

저 또한 그냥 클래스 모델을 만들고 makemigration, migrate 명령어를 두 개를 

 

그냥 순차적으로 입력해 주면 된다고 외워서 개발을 했던 기억이 있습니다.

 

하지만 개념만 잘 알고 가시면 마이그레이션은 어려운 것이 아닙니다.

클래스 모델을 만들고 makemigrations 명령어를 입력해서

데이터베이스 쪽에서 테이블을 생성할 수 있도록 migrate 하는 것이 끝입니다.

이렇게 설명해도 잘 모르시는 분들 계신데 당연히 모르는 게 맞습니다.

 

그럼 실습을 통해 알려드리도록 하겠습니다.

 

아직까지 클래스로 테이블 정의만 변경된 상태입니다. 다음 명령으로 변경 사항을 데이터베이스에 반영합니다.

 

python manage.py startapp api 명령어를 통해 새로운 app을 만들었습니다.

 

api 하위 폴더에 보시면 models.py 파일이 있습니다.

 

models.py 파일을 눌러보시면 내용이 비어 있는 것을 확인할 수 있습니다.

 

 

우린 장고 안에서 models를 만들었습니다.

 

그럼 Post라는 모델 클래스를 만들어 보도록 하겠습니다.

그런데 모델을 만들긴 했는데 우린 실제로 데이터베이스에 Post란 모델이 적용된 게 아닙니다.

 

아래 그림을 보셔도 테이블이 없는 것을 확인하실 수 있습니다.

 

 

migrations라는 하위 폴더에 __init__.py라는 것이 있는 것을 확인할 수 있습니다. 

 

이제 데이터베이스에 적용해 줄 명령어를 사용해보도록 하겠습니다.

$ python manage.py makemigrations

명령어를 입력하고 결과를 확인하면 model Post가 만들어졌다고 표시됩니다.

 

 

그럼 아까와 다르게 migrations 하위 폴더에 0001_initial.py라는 파일이 생성된 것을 확인할 수 있습니다.

 

 

0001_initial.py 파일을 확인해 보니 어떤 코드가 생성이 된 것을 확인할 수 있습니다.

 

 

우린 슬프게도 이렇게 한다고 해도 아직 데이터베이스엔 아무 반응이 없습니다.

 

 

그럼 실제로 장고 명령어를 통해 데이터베이스에 반영해보도록 하겠습니다.

$ python manage.py migrate

 

명령어를 실행했더니 데이터베이스에 우리가 만들었던 모델이 테이블 형태로 만들어진 것을 알 수 있습니다. 

 

 

처음에 알려드린 클래스 모델을 만들고 makemigrations 명령어를 입력해서

 

데이터베이스 쪽에서 테이블을 생성할 수 있도록 migrate 하는 것이 끝이다라는

 

말을 이제 이해하셨을 것이라 믿겠습니다.

 

봐주시느라 고생 많으셨습니다.

 

수고하셨어요.

반응형
Comments