makemigrations / migrate

hyuckhoon.ko·2020년 6월 12일
0

What I learned in wecode

목록 보기
51/109

다음과 같은 장고 명령어를 자주 봤을 것이다.

$ python manage.py makemigrations
$ python manage.py migrate


비슷한 명령어지만 반드시 구분할 수 있어야 하는 개념이다.

하다가 막히면 궁금한 점을 찾기 위해 장고 튜토리얼을 보고 구글검색을 진행하는 편이다. 장고 튜토리얼의 내용을 보자.(영문버전)

1. makemigrations

The makemigrations command looks at all your available models
and creates migrations for whichever tables don’t already exist.

  • 조건 : (ERD구성도 등을 통한 모델링 후) models.py모듈이 있어야 한다.
  • 결과 : 명령어 해석 그대로 migrations 디렉토리를 만들어준다.
  • 핵심 : 아직 (DB에) 사용자 정의 테이블이 반영된것이 아니다.
$ python manage.py makemigrations polls



Migrations for 'polls':

  polls/migrations/0001_initial.py

    - Create model Choice

    - Create model Question

    - Add field question to choice

(참고) 장고에서 Field(필드)란, DB 테이블에서 열(column)을 의미한다. 장고에서 필드는 모델을 생성할 때 반드시 필요한 요소로써, 모델클래스의 속성으로 나타낸다.
(추가설명) 라이브러리와 웹프레임워크의 차이 중 하나는, 함수 및 클래스의 호출을 누가 하느냐에 있다. BeautifulSoup모듈의 soup는 우리가 직접 호출해야 했다. 웹 프레임워크에서는 django가 사용자 정의 클래스 등을 호출한다.

예를 들어,

	full_name = models.CharField(70)

에서 full_name은 필드 클래스의 객체다.
models는 django 패키지에서 알 수 있듯이 패키지다.
CharField는 필드의 타입을 정의하는 클래스다.

필드이름들이 DB에서 Column이 되는 것이다.
(참고로, 필드이름에 __ 언더스코어 두 개를 연속하여 사용할 수 없다. Query syntax와 충돌이 일어나기 때문이다.)






2. migrate

migrate runs the migrations and creates tables in your database, as well as optionally providing much richer schema control.

Migrations are Django's way of propagating changes you make to your models (adding a field, deleting a model, etc.) into your database schema. They're designed to be mostly automatic, but you'll need to know when to make migrations, when to run them, and the common problems you might run into.

  • 조건 : makemigrations를 한 이후에 진행
  • 결과 : 비로소 DB에 저장
  • 핵심 :

(참고) 스키마
스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다. (명세서라는 컨셉을 이해하자)

0개의 댓글