Contents
djagno 5 - django에 DB 연동하기
   2022년06월17일     3분정도면 다 읽어요     - Comments

[카카오 클라우드 스쿨] djagno 5 - django에 DB 연동하기

django에 DB 연동하기

5-1. DB를 연동하기 위한 기본 개념

백엔드의 핵심, DB와 서버 연동하기


1 . 3-Tier application

  • DB를 구성할 때, 보통 웹서버랑 다른 컴퓨터에 설치하는 것이 일반적
  • 즉, 웹서버는 서버이자 DB 클라이언트가 됨
    • (3-Tier app)
      img_48


2 . Database에 연동하기 위한 django 설정

  • django는 기본적으로 기본 DB를 쓰도록 설정되어 있음
  • 따라서 하단 예시와 같이 settings.py에서 사용할 DB를 바꾸어야 함
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '[DB 이름]',
        'USER': '[DB 접속 ID]',
        'PASSWORD': '[DB 접속 PW]',
        'HOST': '[DB 서버 IP주소]',
        'PORT': '[DB 서버 포트번호]',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
        }
    }
}


  • 위 코드를 보면 DB와 연결하는 데에는 4가지 정보가 필요하다
    1. DB 서버의 IP (HOST)
    2. DB 프로그램의 port (PORT)
    3. 사용하고자 하는 DB의 이름 (NAME)
    4. DB에 접근할 수 있는 인증 정보 (USER, PASSWORD)
    5. 그 외 알아서 CRUD를 수행하도록 할 수 있는 기능 등 (OPTIONS)


3 . ORM 수행

  • settings.py의 Database 부분을 구성했다면, ORM을 수행한다
  • ORM이란?
    • 객체와 관계형 데이터베이스를 매핑한다
    • 즉, django의 객체를 RDB에 차곡 차곡 저장해 준다
  • 다음을 입력하면 ORM이 수행된다(이제 django에서 객체를 만들면 DB에서 테이블이 알아서 생성된다)
    • 참고로 django는 MVT 중, M(MODEL)이 ORM을 수행한다
python manage.py migrate



5-2. MariaDB 설치

maria DB를 django와 연동해 볼 것임

  • 원래는 컴퓨터 두 대로 운영하는 것이 맞지만, 지금 컴퓨터가 한 대라서 VM을 사용해서 구성해 보자

두 가지 가상화 기술
VM: 비휘발적임, Hypervisor 기반
컨테이너: VM보다 가벼움, 빨리 생성할 수 있지만, 반대로 쉽게 삭제될 수 있음


  1. 가상 머신에서 MariaDB를 설치한다

  2. 계정 및 UTF8 설정
    img_12
    • UTF8: 한국어 호환용(이진수)
    • 비밀번호: 기본 계정 roor의 PW 설정
    • root 사용자: 원격에서 루트계정 접근 가능(평소에는 위험하니까 쓰면 안됨)
  3. 서비스 및 포트 설정
    img_13
    • DB 프로그램은 터미널에서 실행해야 되는데, 이는 리눅스에서는 데몬, 윈도우에서 service라고 한다
    • maria와 mysql의 포트는 기본 3306
    • 그리고 버퍼 사이즈 세팅
  4. 서비스 및 포트 확인해 보기
    img_14
    • netstat -ano를 통해 3306포트가 열려있는지 알 수 있음
    • 가상 머신의 DB 세팅 끝



5-3. MariaDB 접속테스트

  1. 다음은 원격에서 접속을 테스트 해 보자
  2. 원격(내 경우에는 VM이 아닌 오리지널)PC에서 HeidiSQL을 실행한다
  3. 신규 버튼 클릭
  4. 아까 세팅한 4가지 정보 입력
    1. 가상 머신의 IP주소
    2. ID, PW
    3. port number
    4. DB name
  5. 혹여나 연결이 되지 않는다면 VM의 NAT를 지웠다가 다시 만들어 보자
  6. 쿼리문을 통해서 DB를 생성한다
    img_44

RDBMS: 어떻게든 제약을 걸어서(스키마) 데이터를 정돈된 상태로 유지하겠다는 굳은 의지가 보임



5-4. mariaDB와 django 연결하기

5-1에서 본 것처럼, 몇가지 세팅이 필요하다

1 . 이제 장고가 클라이언트로써 DB에 접속을 해야 함
2 . 서버는 잠시 끄고, mysqlclient 설치(mariaDB와 호환됨)

pip install mysqlclient

3 . settings.py 파일에서 DB 부분을 다음과 같이 DB에 맞게 수정한다. 설명은 5-1 참고

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'web',
        'USER': 'root',
        'PASSWORD': 'qwer1234',
        'HOST': '192.168.17.17',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
        }
    }
}

4 . 터미널에서 다음을 실행한다

  • ORM이 수행된다
  • 참고로 ORM은 settings.py에 있는 installed app 중 관련된 프로그램에 의해 실행이 된다
  • 최종적으로 DB와 연결되게 될 것이다
python manage.py migrate

5 . HeidiSQL (접속 클라이언트)에서 새로고침 하면 web 내부에 데이터가 생성된 걸 확인 가능