본문 바로가기
IT/Python

장고(Django) 마이그레이션(Migration)

by 쿠이모 2023. 12. 18.

마이그레이션이란?

마이그레이션은 모델에 생긴 변화(필드 추가, 모델 삭제 등)를 반영하는 Django의 방식이다. 자동실행되도록 설계되었다.

장고는 ORM을 사용하기 때문에 models.py와 클래스를 통해 DB 스키마를 생성하고 컨트롤 한다. 이 때, DB 스키마를 버전별로 나눠 관리할 수 있게 해주는 시스템이 마이그레이션이다.

스키마 변화를 지원하도록 만들어졌으며 서드파티 백엔드를 포함, Django에 포함된 모든 백엔드에서 마이그레이션이 지원된다.

 

 

명령어

마이그레이션을 실행하고 데이터베이스 스키마를 장고가 다루기 위한 다양한 명령어들이 있다.

  • migrate은 마이그레이션을 반영하거나 반영하지 않기 위해 사용

1. python manage.py makemigrations [app_name]

마이그레이션 생성 명령어

뒤에 app_name을 입력하면 해당 app에 대해서만 마이그레이션을 생성하고, app_name을 생략하면 전체 app에 대해 마이그레이션을 생성한다.

app_name을 입력하지 않으면 의도하지 않은 마이그레이션이 생성될 수 있으니 가급적 app_name을 같이 입력하는 것을 권장.

단, 프로젝트 생성 후 처음 migrate 작업을 위한 마이그레이션을 생성할 때는 app_name을 생략해야 함

 

 

2. python manage.py migrate [app_name] [migration_name]

마이그레이션 적용 명령어

실제 DB에 변경사항을 적용하는 명령어이다. makemigrations와 같이 app_name을 지정해서 특정 app만 migrate 할 수 있으며 app_name 뒤에 마이그레이션 파일의 이름을 지정하면 해당 버전의 마이그레이션을 적용하게 된다. 이전 버전으로 돌리는 것도 가능하다.

 

'IT > Python' 카테고리의 다른 글

[Python] 파이썬 any(), all() 함수  (0) 2023.12.05
[Python] requirements.txt 생성하는 법  (1) 2023.12.01
[Python] 파이썬 Counter  (0) 2023.11.24
[Python] 파이썬 aiohttp 라이브러리  (0) 2023.11.16
[Python] 파이썬 map(), map함수  (0) 2023.11.15