본문 바로가기
Django Class Review

Django Class Review3(Model)

by Rain_fall 2025. 8. 20.

1. Model

Django에서 Model이란? 데이터베이스의 테이블 구조를 파이손 코드로 정의한 것입니다. 개발 과정에서 이 모델에 새로운 필드를 추가하거나 기존 필드를 변경하는 등 수정 작업이 발생합니다.  여기서 사용되는 python manage.py migrate 명령어는 이러한 코드상의 변경(migrations)을 실제 데이터베이스 스키마에 반영하여 동기화하는 역할을 합니다.

보통 python manage.py makemigrations 명령어를 먼저 실행하여 모델의 변경 사항을 감지하고 migrations라는 설계도를 생성한 뒤, python manage.py migrate를 실행하여 이 설계도를 실제 데이터베이스에 적용하는 흐름으로 사용됩니다. 하지만 프로젝트를 만든 후에 처음으로 실행하는 migrate 명령어의 경우 이미 프로젝트를 생성할때 이미 생성된 디폴트 makemigrations를 실행하는 것입니다. 

1) 자주 사용하는 명령어

  • makemigrations: 모델의 변경 내용을 바탕으로 마이그레이션 파일(파이손 파일의 지침 세트)을 생성 
  • migrate: 생성된 마이그레이션 파일(설계도)을 읽어 실제 데이터베이스에 적용 

쉽게 비유하자면, makemigrations는 건물의 설계도를 그리는 과정이고, migrate는 그 설계도를 보고 실제로 건물을 짓는 시공 과정이라고 할 수 있습니다. 이 두 명령어를 통해 Django는 데이터베이스의 구조를 체계적으로 관리하고 추적할 수 있습니다. 

  • sqlmigrate: 특정 마이그레이션이 데이터베이스에 적용될 때 실행될 SQL 문(코드)을 출력

이 명령어는 데이터베이스 관리자(DBA)가 변경 사항을 검토해야 하거나, 특정 변경이 데이터베이스에 어떤 영향을 미칠지 정확히 파악하고 싶을 때 매우 유용합니다. 하지만 해당 명령어의 경우 거의 사용하지 않습니다.

 

2. Migrations 실행 단계

위에서 Model 설정을 위해 사용되는 migrate 명령어에는 몇가지 단계가 있는데 그 단계에 대해서 간단하게 알아보겠습니다.

1)프로젝트를 새로 생성하고 python manage.py migrate 명령어를 실행

: 해당 명령어 실행을 통해 프로젝트를 생성할때 이미 생성된 디폴트 makemigrations를 실행한다.

2)app 및 model 생성

: 사용하고자 하는 app과 model을 생성한다.

3)settings.py의 INSTALLED_APP에 앞서 생성한 app을 추가한다.

: 사용하고자 하는 app을 등록해야 사용할 수 있다.

4)python manage.py makemigrations app_name을 통해 마이그레이션 파일을 생성

5)python manage.py migrate를 통해 실제 데이터베이스에 적용

위 단계를 통해서 원하는 앱을 등록하고 model을 만들어 실제 데이터 베이스에 적용할 수 있다.

 

3. 실습 

1)기본 프로젝트 설정

먼저 my_site라는 프로젝트와 office라는 앱을 생성하고 migrate한다. 그리고 office 앱에 다음과 같이 Patient라는 Model을 생성했다는 것을 기본 설정으로 가져간다.

2)App등록

settings.py의 INSTALLED_APPS에 office.apps.OfficeConfig를 추가한다.

3)makemigrations office

makemigrations 명령어 실행을 통해서 모델의 변경사항을 저장한다. 해당 명령어를 실행하게 되면 다음과 같이 migrations 폴더 내에 0001_initial.py와 같은 파일이 생성되게 된다.

4)migrate

마지막으로 앞서 생성된 0001_initial.py 파일을 적용하기 위해서 python manage.py migrate를 실행하게 되면 django가 이를 실행하여 sql코드를 실행하고 데이터베이스와 상호작용한다.

실행화면

 

 

 

 

 

'Django Class Review' 카테고리의 다른 글

Django Class Review3(Database & Query)  (0) 2025.08.20
Django Class Review2(static file)  (0) 2025.08.19
Django Class Review2(custom 404 page)  (0) 2025.08.19
Django Class Review2(template)  (4) 2025.08.14
Django Class Review1(view, URL)  (1) 2025.08.12