데이터 분석 기술 블로그

Django에 대하여(10)_Migrations 본문

백엔드

Django에 대하여(10)_Migrations

데이터분석가 이채은 2024. 3. 31. 09:00

1. Migrations

Migrations란, model 클래스의 변경사항(필드 생성, 수정, 삭제 등)을 DB에 최종 반영하는 방법입니다.

Migrations 과정

1.1 Migrations 핵심 명령어 2가지

  1. model class를 기반으로 최종 설계도(migration) 작성
    python manage.py makemigrations
  2. 최종 설계도를 DB에 전달하여 반영
    python manage.py migrate

1.2 migrate 후 DB 내에 생성된 테이블 확인

Article 모델 클래스로 만들어진 articles_article 테이블


2. 추가 Migrations

아래 그림과 같이 이미 생성된 테이블에 필드를 추가하고 싶을 땐 어떻게 해야 할까요?

2-1 추가 모델 필드 작성하기

# articles/models.py

class Article(models.Model):
title = models.CharField(max_length=10)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

 

2-2 추가 필드의 기본 값 설정하기

python manage.py makemigrations

makemigrations 코드 작성 후 터미널에 뜨는 내용

  • 이미 기존 테이블이 존재하기 때문에 필드를 추가할 때 필드의 기본 값 설정이 필요
  • 1번은 현재 대화를 유지하면서 직접 기본 값을 입력하는 방법
  • 2번은 현재 대화에서 나간 후 models.py에 기본 값 관련 설정을 하는 방법

2-3 추가 필드의 기본 값 입력하기

1번 클릭 후 터미널에 뜨는 내용

  • 추가하는 필드의 기본 값을 입력해야 한다.
  • 추가하려는 데이터가 날짜 데이터이기 때문에 직접 입력하기 보다 Django가 제안하는 기본 값을 사용하는 것을 권장
  • 아무것도 입력하지 않고 enter를 누르면 Django가 제안하는 기본 값으로 설정된다.

2-4 migration 파일 생성 확인

  • migrations 과정 종료 후 2번째 migration 파일이 생성됨을 확인
  • 이처럼 Django는 설계도를 쌓아가면서 추후 문제가 생겼을 시 복구하거나 되돌릴 수 있도록 함 ('git commit'과 비슷)

migration 파일 생성 확인

2-5 migrate 후 테이블 필드 변화 확인

python manage.py migrate

migrate 코드 작성 후 필드 변화

요약

model class에 변경사항 (1. model class 변경)이 생겼다면, 반드시 새로운 설계도를 생성(2. makemigrations)하고, 이를 DB에 반영 (3. migrate) 해야 한다.