데이터베이스 관리
Django ORM은 데이터와 상호 작용하는 수준을 넘어섭니다. 또한 마이그레이션이라는 프로세스를 통해 데이터베이스 자체를 만들고 업데이트하는 데 사용할 수도 있습니다.
마이그레이션
마이그레이션은 데이터베이스의 스키마에 대해 수행할 업데이트 모음입니다. 데이터베이스 스키마는 모든 테이블 및 열을 포함하는 데이터베이스 자체의 정의와 해당 테이블 간의 관계입니다.
모델을 만들고 필드를 정의할 때 테이블, 열 및 해당 테이블 간의 관계도 정의했습니다. 모델을 만들어 스키마 정의를 만들었습니다.
마이그레이션은 모델이 변경될 때 데이터베이스를 만들고 업데이트하는 데 사용됩니다. 아시다시피 소프트웨어는 지속적으로 변화하고 있습니다. 오늘날 우리가 모델을 정의하는 방법은 내일 모델을 정의하는 방법과 다를 수 있습니다. 마이그레이션은 데이터베이스 업데이트 프로세스를 추상화합니다. 그런 다음 모델을 변경하고 Django를 사용하여 데이터베이스에 필요한 변경 작업을 수행할 수 있습니다.
마이그레이션 수행하기
마이그레이션을 만들려면 manage.py에서 makemigrations
명령을 사용합니다. makemigrations
명령은 현재 마이그레이션 목록을 사용하여 시작점을 가져온 다음 현재 모델 상태를 사용하여 델타(변경해야 하는 변경 사항)를 확인합니다. 그런 다음 데이터베이스를 업데이트하는 데 필요한 코드를 생성합니다. makemigrations
가 실행된 후 마이그레이션 이름이 표시됩니다.
python manage.py makemigrations
마이그레이션에 관한 SQL 표시
관계형 데이터베이스 내에서 발생하는 모든 작업에는 SQL(구조적 쿼리 언어)이 필요합니다. Django의 마이그레이션은 실행될 때 적절한 SQL을 생성합니다. 마이그레이션 도구를 사용하여 데이터베이스를 직접 업데이트할 수 있지만 일부 환경에는 프로세스를 관리하는 데이터베이스 관리자가 있을 수 있습니다.
적절한 SQL 문을 빌드하기 위해 sqlmigrate
를 사용할 수 있습니다.
python manage.py sqlmigrate <app_label> <migration_name>
참고
app_label
파트는 앱의 이름으로, 일반적으로 앱을 포함하는 폴더의 이름입니다. migration_name
파트는 마이그레이션의 이름입니다. 또한 마이그레이션 폴더에 있는 모든 앱의 마이그레이션에 관한 Python 코드를 볼 수 있습니다.
마이그레이션 목록 표시
모든 마이그레이션을 표시하려면 showmigrations
를 사용할 수 있습니다.
python manage.py showmigrations
마이그레이션 수행
migrate
명령은 프로젝트 폴더의 루트에 있는 settings.py에 구성된 데이터베이스에서 특정 마이그레이션 또는 모든 마이그레이션을 실행합니다.
settings.py를 열면 아래쪽에 DATABASES
섹션이 표시됩니다. 이 섹션에는 새 프로젝트에서 SQLite를 사용하도록 구성된 default
옵션이 포함되어 있습니다. 필요에 따라 이 섹션에서 다른 데이터베이스 연결 문자열을 구성할 수 있습니다.
python manage.py migrate <app_label> <migration_name>
참고
app_label
및 migration_name
부분은 선택 사항입니다. 둘 중 하나를 제공하지 않으면 모든 마이그레이션이 실행됩니다. 개발하는 동안 이 명령을 사용하는 경우가 많습니다.