[강의 공부] 9. makemigrations, migrate 명령어 (DB 연동)

단간단간·2024년 4월 17일
0
post-thumbnail

makemigrations & migrate 명령어

django의 makemigrationsmigrate 명령어는 데이터베이스 스키마 관리와 관련된 중요한 도구이다.
이 두 명령어를 사용해서 애플리케이션의 모델 변경사항을 데이터베이스에 적용하는 과정이 진행된다.

1. makemigrations

  • 사용 목적:
    모델에 대한 변경사항을 감지하여 이를 마이그레이션 파일로 생성한다. 이 마이그레이션 파일은 모델의 변경사항을 데이터베이스 스키마 코드로 표현한 것이며, makemigrations 명령어를 통해 db와 연동시킬 python 파일로 만들어주는 작업을 한다.

  • 실행 방법:

    $ python manage.py makemigrations
    
    # 특정 앱을 대상으로 하는 경우
    $ python manage.py makemigrations {app_name}
  • 결과:
    migrations 디렉토리 하위에 새로운 마이그레이션 파일이 생성된다. 이 파일은 나중에 migrate 명령어를 통해 실행될 수 있으며, 해당 파일은 직접적으로 변경하거나 지우지 않는 것이 권장된다.

2. migrate

  • 사용 목적:
    makemigrations 명령어로 생성된 마이그레이션 파일들을 실제 데이터베이스에 적용하여 모델의 변경사항을 데이터베이스 스키마에 반영한다.
  • 실행 방법:
    # 모든 준비가 된 마이그레이션 파일을 데이터베이스에 적용한다.
    $ python manage.py migrate
  • 결과:
    데이터베이스 스키마가 최신 상태로 업데이트 되며, 이는 모델의 최신 정의를 반영한다.

간단히 정리!

  • makemigrations는 DB와 장고를 연결시켜주는 연결고리라고 생각하면 됨
  • 그런데 파일이 만들어진다고 해서 자동적으로 연동이 되는 것이 아니라, 이를 연동시켜줄 명령어를 입력해야 하는데 그게 바로 migrate 인 것

  • makemigrations: 연결고리
  • migrate: 연동

⎷ 간단한 실습

1. accountapp > models.py 모델 객체 정의

from django.db import models

# Create your models here.
class HelloWorld(models.Model):
    text = models.CharField(max_length=255, null=False)

2. 마이그레이션 파일 생성

$ python manage.py makemigrations

3. DB와 마이그레이션 파일 연동

$ python manage.py migrate

참고)

  • migrations 디렉토리 하위에 0001_initial.py 파일 생성됨
  • settings.py 에서 어떤 DB로 연동했는지 정보 확인 가능 (추후 DB 변경 예정)
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }
profile
simple is best

0개의 댓글