이번 단계에서는 데이터베이스를 설치하고 모델을 정의/생성합니다.
데이터베이스 설정 파일인 mysite/settings.py를 확인해봅니다 :)
Django에서 기본적으로 제공하는 SQLite를 사용하여 실습을 진행하지만, 실 운영 환경에서는 postgresql과 같은 안정적인 데이터베이스를 처음부터 사용하는것을 권장합니다.
이제 진행해봅시다 고고!!🧑💻👩💻
1. 데이터베이스 만들기
먼저, mysite/settings.py 파일을 살펴봅시다!
데이터베이스 연결 정보가 들어있습니다. 다른 데이터베이스를 사용하신다면 여기를 참조하세요.
지금은 기본적인 동작 메커니즘만 살펴볼 예정이므로 기본으로 제공되는 SQLite를 사용합니다 :)
Language_code와 Time_zone을 알맞게 바꿔줍시다. ;)
LANGUAGE_CODE = 'ko-KR'
TIME_ZONE = 'Asia/Seoul'
이제, 먼저 기본적인 데이터베이스 스키마를 생성하겠습니다
먼저, 아래 명령어를 실행합니다. (pycharm 왼쪽 아래 터미널에서 실행할수있습니다)
python manage.py migrate
manage.py 는 여러가지 관리 명령어를 제공하는 명령어 유틸리티입니다.
python manage.py migrate 명령어는 mysite/settings.py 파일의 INSTALLED_APPS 와 DATABASES 설정을 확인하여 데이터베이스 테이블을 생성합니다.
아래 처럼 나오면 성공입니다 :)
이제 Django 실행에 필요한 기본적인 데이터 구조가 생성 완료되었습니다.
다음 단계로 넘어가서 APP에서 사용할 데이터베이스 구조를 정의하고 생성합니다.
2. 데이터베이스 구조(스키마) 정의/생성
이번 단계에서는 APP에서 사용할 데이터베이스의 구조(스키마)를 정의하고 생성하는 단계입니다.
먼저, 데이터베이스에 2개의 필드가 필요합니다. 아래 그림과 같은 테이블을 만들 예정입니다 :)
first_app/models.py 파일에 아래처럼 작성합니다.
models.py 파일에 데이터베이스를 어떻게 만들겠다라는 정의를 해주는 과정입니다.
아래 코드를 복사 붙여넣기 하세요!
import datetime
from django.db import models
# Create your models here.
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
이제 first_app/models.py에 데이터의 스키마가 정의 되었다는것을 메인 프로젝트에 알려줍시다.
mysite/settings.py파일을 다시 열어준다음, INSTALLED_APPS 에 first_app을 추가합니다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'first_app.apps.FirstAppConfig',
]
이제 두번째 명령어를 실행합시다!
python manage.py makemigrations first_app
first_app 부분도 데이터베이스 스키마를 생성해줍니다. 여기까지 진행 했을 시 first_app/migrations 폴더에 0001_initial.py가 작성됩니다. 파일을 열어보면 데이터베이스 생성에 필요한 부분이 정의 되어있습니다.
이 파일들이 반영 되도록 마지막 명령어를 실행해줍니다.
python manage.py migrate
명령어 실행이 완료되면 아래와 같이 정상적으로 적용되었다는 내용이 출력됩니다 :)
여기까지 진행하셨다면 완료 데이터베이스를 정의하고 생성하는 과정까지 완료 되었습니다 :)
두 단계를 모두 마치셨다면, 이게 실제로 데이터베이스 구조가 만들어진건지 궁금하실 겁니다.
눈으로 확인해봅시다.
아래 캡쳐 사진은 SQLite Client로 데이터베이스를 연결하여 확인한 결과입니다. (SQLiteClient설치안내)
1단계에서 생성한 테이블 그리고 2단계에서 생성한 테이블 (first_app_choice/ first_app_question) 스키마를 확인할 수 있습니다 😁
모든 실습이 완료되었습니다 :)
모든 실습은 공식홈페이지와 비슷하게 진행됩니다.!!