영벨롭 개발 일지

[Django]장고 Model 만들기 - ORM & Migration 본문

Back-end/Django

[Django]장고 Model 만들기 - ORM & Migration

영벨롭 2022. 5. 17. 20:22

[ ORM 이란? ]

 

 ORM은 Object Relational Mapping의 약어로 객체(object)와 테이블(table, 관계형 데이터베이스)를 연결(mapping)하는 것입니다. 

 

 데이터베이스의 테이블을 객체와 연결하여 SQL 쿼리를 사용하지 않고도 Django를 통해 테이블에 CRUD를 가능하게 합니다. 

 

 

★ 파이썬 객체를 이용한 Table 표현

 

 다음과 같은 테이블을 Django의 파이썬 객체를 이용하여 models.py 안에서 class로써 테이블을 표현할 수 있습니다. 

 

 이때 각각의 데이터들은 타입을 명시해줘야합니다. 

 

학번 이름 전공
20220001 김철수 컴퓨터공학
20220002 신짱구 컴퓨터공학

 

# ../models.py

from django.db import models

class Student(models.Model):
    studentID = models.IntegerField()
    name = models.CharField(max_length=30)
    major = models.CharField(max_length=100)

 

 

 

 

 

 

 

[ Migration ]

 

 그렇다면 위에서 우리가 만든 객체(모델)을 데이트베이스에 반영해주어야하는데, 이것을 Migration이라고 합니다. 

 

 

★ Migration 적용

 

 다음 명령어는 데이터베이스를 처음 초기화하거나 변경사항을 담은 파일을 토대로 변경사항을 반영하는 작업을 수행합니다. 

 

 즉 migration을 적용하여 실제 데이터베이스에 변경사항을 적용합니다. 

 

$ python manage.py migrate

 

 

★ Migration 생성

 

 다음 명령어는 변경사항을 담은 파일을 생성, 즉 마이그레이션을 생성합니다. 

 

$ python manage.py makemigrations

 

 

 models.py 에서 모델(객체)를 새로 정의하면 makemigrations를 통해 마이그레이션을 생성하고 migrate를 통해 데이터베이스에 변경사항을 반영합니다. 

 

 

 

★ Migration 확인

 

 admin 사이트에서 변경사항이 잘 적용되었는지 확인할 수 있는데 이때 admin.py 에 우리의 모델(객체)를 등록해줘야합니다. 

 

# ../admin.py

from django.contrib import admin
from .models import Student

admin.site.register(Student)

 

 admin 계정을 생성하는 방법은 다음과 같습니다. 

 

$ python manage.py createsuperuser

 

반응형