파이썬 장고 모델(ORM): 데이터베이스 설계 및 구현 방법

파이썬 장고 모델(ORM): 데이터베이스 설계 및 구현 방법

이 글에서는 장고를 사용하여 간단한 블로그 시스템의 데이터베이스를 설계하고 구현하는 방법에 대해 알아보겠습니다. ‘Post’ (게시글)와 ‘Comment’ (댓글)라는 두 가지 모델을 만들어 보겠습니다.

1. ORM (Object-Relational Mapping) 이해

장고의 ORM은 모델을 사용하여 데이터베이스의 테이블을 정의하고, 모델 인스턴스를 통해 테이블의 레코드를 조작할 수 있게 해줍니다. 이를 통해 SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행할 수 있습니다. 이는 데이터베이스 작업을 보다 효율적이고 오류를 적게 만들어 줍니다.

2. Post 모델 정의

‘Post’ 모델은 블로그 게시글을 나타냅니다. 이 모델은 제목, 내용, 작성일, 작성자 등의 필드를 포함합니다. 다음은 ‘Post’ 모델의 기본 구조입니다.

from django.db import models

class Post(models.Model):
  title = models.CharField(max_length=100)
  content = models.TextField()
  created_date = models.DateTimeField(auto_now_add=True)
  author = models.ForeignKey('auth.User', on_delete=models.CASCADE)

여기서 ‘CharField’는 글자 수가 제한된 텍스트를, ‘TextField’는 긴 텍스트를 나타냅니다. ‘DateTimeField’에 ‘auto_now_add=True’ 옵션을 주면 게시글이 생성된 시점의 시각이 자동으로 저장됩니다. ‘ForeignKey’는 다른 모델에 대한 참조(여기서는 작성자)를 나타냅니다.

3. Comment 모델 정의

‘Comment’ 모델은 각 게시글에 달리는 댓글을 나타냅니다. 이 모델은 댓글 내용과 해당 댓글이 속한 게시글의 참조를 포함합니다. 다음은 ‘Comment’ 모델의 기본 구조입니다.

class Comment(models.Model):
  post = models.ForeignKey(Post, on_delete=models.CASCADE)
  content = models.TextField()
  created_at = models.DateTimeField(auto_now_add=True)

‘ForeignKey’를 사용하여 ‘Comment’ 모델이 ‘Post’ 모델에 연결되는 것을 볼 수 있습니다. 이는 ORM의 핵심 기능 중 하나로, 관계형 데이터베이스의 테이블 간 관계를 객체 지향적으로 표현할 수 있게 해줍니다.

Post, Comment 모델 정의 작성 예시

4. 앱 등록하기

새로 생성한 ‘myapp’ 앱을 장고 프로젝트에 등록해야 합니다. 이렇게 하면 장고가 앱의 존재를 인식하고, 모델을 데이터베이스와 연결할 수 있습니다. 앱을 등록하려면 ‘config/settings.py’ 파일을 열고 ‘INSTALLED_APPS’ 설정에 앱의 구성 클래스를 추가합니다. 다음은 ‘myapp’ 앱을 등록하는 방법입니다.

INSTALLED_APPS = [
  'myapp.apps.MyappConfig',  # 이 부분 추가
  'django.contrib.admin',
  'django.contrib.auth',
  ...
]

‘myapp.apps.MyappConfig’는 ‘myapp’ 앱의 설정 클래스를 가리킵니다. 이 클래스는 ‘myapp/apps.py’ 파일에 정의되어 있으며, 장고에 앱의 존재와 구성을 알려주는 역할을 합니다. 이렇게 앱을 등록한 후에는 장고 프로젝트가 앱의 모델을 인식하고, 관련된 데이터베이스 테이블을 생성할 준비가 됩니다.

앱 등록하기 예시

5. 데이터베이스 테이블 생성하기

모델을 정의한 후, 실제 데이터베이스에 테이블을 생성하기 위해 장고의 마이그레이션 시스템을 사용합니다. 먼저, python manage.py makemigrations 명령어를 실행하여 모델 변경사항에 대한 마이그레이션 파일을 생성합니다. 이 파일은 모델의 변경사항을 데이터베이스 스키마 변경으로 변환하는 역할을 합니다. 그 후, python manage.py migrate 명령어를 사용하여 실제 데이터베이스에 테이블을 생성합니다. 다음은 이 과정을 수행하는 명령어입니다.

python manage.py makemigrations
python manage.py migrate

이 명령들을 실행하면, 장고는 모델의 정의를 바탕으로 데이터베이스 스키마를 생성하거나 업데이트합니다. 이 과정을 통해 ‘myapp’ 앱의 ‘Post’와 ‘Comment’ 모델에 해당하는 테이블이 데이터베이스에 생성됩니다. 이제 이 테이블들을 사용하여 데이터를 저장하고 조회할 수 있습니다.

데이터베이스 테이블 생성 예시
DB Browser for SQLite 에서 테이블 생성 확인


☞ 이 글을 통해 장고의 모델과 ORM에 대한 기본적인 이해를 얻을 수 있으며, 이는 장고로 데이터 중심의 웹 애플리케이션을 개발하는 데 필수적인 지식입니다.

관련 이전 게시글


이 글이 도움이 되셨다면 공유 부탁드립니다!

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤