Byeonguk Kim

안녕하세요. 29살의 조금은 늦은 나이로 새롭게 개발자로 시작하는 신입 개발자입니다. 포트폴리오 [https://deaguowl.github.io]

Django 04. 장고 데이터베이스 설치

24 Apr 2019 » Django

2019.04.24 장고 데이터베이스 설치하기

(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)

# 질문에 답하기

  1. 장고 데이터베이스 설치하기

데이터베이스 설치하기

  1. 기본적으로 project를 생성하고나면 python manage.py migration을 통해 데이터베이스 생성해주기
    1. 기본 데이터테이블 생성하기
  2. 모델 만들기
  3. 모델을 바탕으로 해당 앱 데이터테이블 생성하기

기본 데이터테이블 생성하기

migrate

  • python manage.py migrate
  • migrate는 settings/INSTALLED_APPS에 등록되어 있는 앱에 필요한 데이터테이블을 생성한다.
  • 따라서 INSTALLED_APPS에 등록되어 있지 않다면 migration 명령이 실행되지 않는다.

관리자 계정 생성하기

  • python manage.py createsuperuser
  • 비밀번호 변경
    1. python manage.py chanagepassword [계정명]

모델 만들기

모델 만들기

  • DB에 어떤 데이터를 어떤 형식으로 저장할 것인가?
  • 모델 이름 : 테이블 이름
  • 모델의 필드 : 컬럼
    1. 컬럼은 데이터의 형식 , 제약 조건
    2. 형식 : 정수, 실수, 글자, 길이없는 텍스트, 날짜 등
  • 원래 SQL 언어로 작성을 하여야 하나 model에 클래스를 통해 작성할 수 있다.
  • 모델을 사용하면서 장고에서 주는 이점 중 또 한개는 이렇게 모델에 만들어 놓으면 제약조건에 대한 부분을 프론트에 자동으로 만들어 준다.
    1. 프론트에서 사용하는 폼 태그의 종류와 제약 조건을 제시해준다.
  • 해당 앱의 데이터베이스 구조를 어떻게 구성할 것인가?
  • 이 모델에 따라서 데이터테이블이 생성된다.

polls/models.py

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question,                         on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
  • Question이라는 모델에는 question_text 와 pub_date가 들어가고 각각의 필드(조건)들로 구성된다.
  • Choice라는 모델은 question , choice_text, votes로 구성된다.

해당 데이터테이블 변경사항 추적하기 : 모델을 읽어서 DB에 반영할 사항 확인

  • migrate를 해줘야하는데 migrate는 settings/INSTALLED_APPS에 등록되어 있는 앱에 필요한 데이터테이블을 생성한다.
  • 따라서 먼저 settings/INSTALLED_APPS에 polls를 등록해준다.
  • 해당 앱에 대한 migration을 만들어준다.
  • python manage.py makemigrations polls
  • 해당 앱에 대한 migration을 실시 해준다.

변경 사항 등록하기 : 변경 사항 파일을 읽어서 쿼리 실행

  • python manage.py migrate polls 0001
  • python manage.py migrate만해도 되지만 polls와 0001을 넣는 이유
    • 한 프로젝트 안에서 다른 사람이 만들고 있는 내용도 같이 반영이 될 수 있음

변경사항 확인하기

  • polls/migrations에 보면 변경사항들이 나온다.
  • 장고는 DB 의존성이 낮다.
    1. 의존성 : ~ 에 대한 의존성이 높다는 것은 ~가 아니면 정상 동작하지 않는다.
      1. 예) 삼성 리모컨, lg 리모컨
  • 어떤 쿼리가 실행될지 알고 싶다면
    1. python manage.py sqlmigrate polls 0001
    2. 어떤 쿼리가 실행될지 알고 싶다
    3. slow 쿼리인지 여부 확인
    4. 튜닝이 필요한 쿼리인지 여부 확인할 때 사용한다.