장고 데이터베이스 마이그레이션
서버를 가동하면 다음과 같은 메시지가 출력되면서 시작됩니다. 아래 이미지의 빨간 블록이 그 내용입니다. 18개 항목의 마이그레이션이 필요하다는 설명입니다.
마이그레이션을 적용하지 않고 서버를 실행하면, 데이터베이스가 모델과 동기화되지 않아 예상치 못한 오류가 발생할 수 있습니다. 따라서, 제대로 된 동작을 위해서는 서버 실행 전에 마이그레이션을 적용해야 합니다.
config/settings.py 기본으로 설치된 앱 확인
기본으로 설치된 앱에는 admin, auth, contenttypes, sessions, maessages, staticfiles의 여섯 개 모듈이 보입니다. 장고 서버 구동에서 안내된 4개의 앱은 데이터베이스와 관련된 앱입니다. 나머지 messages와 staticfiles는 데이터베이스와 관련이 없는 앱입니다.
데이터베이스 설정 확인
config/settings.py에서 데이터베이스 설정을 확인해 봅니다.
- 'ENGINE': 'django.db.backends.sqlite3': 사용할 데이터베이스 엔진으로 SQLite를 지정합니다. SQLite는 경량의 디스크 기반 데이터베이스로, 별도의 서버 설정 없이 사용할 수 있어 개발과 테스트에 매우 편리합니다.
- 'NAME': BASE_DIR / 'db.sqlite3': 데이터베이스 파일의 이름과 위치를 지정합니다. BASE_DIR은 프로젝트 디렉터리의 최상위 경로를 나타내며, db.sqlite3 파일은 이 경로에 저장됩니다. BASE_DIR / 'db.sqlite3' 는 BASE_DIR 변수와 'db.sqlite3' 문자열을 경로 객체로 결합합니다. 이는 Python의 pathlib 모듈을 사용하여 플랫폼 독립적인 방식으로 경로를 구성하는 표현 방식입니다.
마이그레이션으로 앱이 필요한 테이블 생성하기
migrate 명령으로 경고 메시지에 있던 앱들이 필요로 하는 테이블을 생성합니다.
마이그레이션 내용은 다음과 같습니다.
- admin: Django 관리자 인터페이스와 관련된 데이터베이스 마이그레이션
- auth: 사용자 인증과 권한과 관련된 데이터베이스 마이그레이션
- contenttypes: Django의 콘텐츠 타입 프레임워크와 관련된 데이터베이스 마이그레이션
- sessions: 사용자 세션을 데이터베이스에 저장하기 위한 마이그레이션
각 마이그레이션 파일 앞의 숫자와 이름은 해당 마이그레이션이 수행하는 작업을 식별하는 데 사용됩니다. 예를 들어, 0001_initial은 앱에 대한 최초의 마이그레이션으로 데이터베이스에 테이블을 생성합니다.
마이그레이션 파일 이름 뒤의 OK는 해당 마이그레이션이 성공적으로 적용되었음을 나타냅니다.
이제 마이그레이션을 적용했으므로 데이터베이스 스키마가 최신 상태이며, 프로젝트가 이를 기반으로 정상적으로 작동할 준비가 되었습니다. 개발 서버를 다시 시작하거나 계속해서 개발을 진행할 수 있습니다.
'도서로 공부하는 프로그래밍 > 코딩 자율학습' 카테고리의 다른 글
[파이썬] 아나콘다 설치 (27) | 2024.02.26 |
---|---|
[파이썬] 중첩된 자료구조 (27) | 2024.02.25 |
[장고] URL 분리하기 (24) | 2024.02.23 |
[장고] git 브랜치 관리로 시작되는 URL 분리하기 (26) | 2024.02.22 |
[장고] volcano 프로젝트 github 레포지터리로 관리 (26) | 2024.02.21 |