[파이썬] Django의 데이터베이스 모델링과 마이그레이션

Django는 파이썬 기반 웹 개발 프레임워크로서, 데이터베이스 모델링과 마이그레이션 기능을 제공합니다. 이를 통해 데이터베이스 구조를 정의하고 변경할 수 있으며, 데이터베이스 스키마를 자동으로 관리할 수 있습니다.

데이터베이스 모델링

Django에서 데이터베이스 모델링은 모델 클래스를 정의하는 것으로 시작됩니다. 모델 클래스는 Django의 models.Model 클래스를 상속받아 정의하며, 각각의 클래스 멤버 변수는 데이터베이스의 열(Column)과 매핑됩니다.

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=5, decimal_places=2)

위의 예시에서 Book 클래스는 데이터베이스의 books 테이블에 매핑됩니다. CharField는 문자열 필드를, DecimalField는 실수형 필드를 나타내며, max_lengthmax_digits, decimal_places와 같은 매개변수들을 통해 필드의 속성을 지정할 수 있습니다.

마이그레이션

데이터베이스 모델을 변경할 때 Django는 마이그레이션(migration)을 사용하여 이를 자동으로 반영합니다. 마이그레이션은 데이터베이스 스키마의 변경 내용을 기록하고, 이를 실행하여 실제 데이터베이스에 반영하는 과정을 말합니다.

  1. 모델 클래스를 변경합니다. 추가, 수정, 삭제 등의 작업을 수행할 수 있습니다.
  2. makemigrations 명령을 실행하여 마이그레이션 파일을 생성합니다. 이 파일은 스키마 변경 내역을 저장하고 있습니다.
  3. migrate 명령을 실행하여 마이그레이션을 적용합니다. 이 과정에서 변경 내역이 데이터베이스에 반영됩니다.
$ python manage.py makemigrations
$ python manage.py migrate

마이그레이션 파일 관리

마이그레이션 파일은 migrations 디렉토리에 저장되며, 각 파일은 순차적인 버전 번호와 스키마 변경 내역을 가지고 있습니다. 이 파일들은 소스 코드 관리 시스템에 포함될 수도 있고, 따로 관리될 수도 있습니다.

또한, 각 마이그레이션 파일에는 해당 변경 내역을 되돌리기 위한 역마이그레이션 정보도 포함되어 있습니다. 이를 통해 필요할 경우 변경 내역을 롤백할 수 있습니다.

결론

Django의 데이터베이스 모델링과 마이그레이션 기능은 데이터베이스 스키마를 쉽게 관리할 수 있는 강력한 도구입니다. 모델 클래스를 통해 데이터베이스 구조를 정의하고, 마이그레이션을 통해 변경 내역을 자동으로 반영할 수 있습니다. 이를 통해 개발자는 데이터베이스 관리에 소요되는 시간과 노력을 최소화하고, 애플리케이션을 효과적으로 개발할 수 있습니다.

더 자세한 내용은 Django 공식 문서를 참조해보세요.