본문 바로가기
Code/Python & Django

[Django] MySQL 과 Django 연동하기

by 코드포휴먼 2020. 5. 31.

장고에서 기본적으로 세팅된 DB는 sqlite3다.

sqlite3는 사용하기 쉽고 간편하지만, 실제 서비스에 사용하기엔 너무 가볍고 구현할 수 있는 기능에 제약이 많다.

따라서 가장 범용적으로 쓰이는 오픈소스 RDBMS인 mysql을 사용한다.

 

MySQL 설치하기

먼저 mysql이 깔려 있지 않다면 설치해준다. (링크)

mariaDB와 mysql은 호환성이 높으므로 (거의 완벽) mariaDB가 깔려있으면 따로 깔지 않아도 된다. (참고)

설치가 어렵다면 링크를 참고해보자. (설치안내)

 

설치 후 제대로 설치 됐는지 여부는 Terminal에서 mysql -u root -p 명령어 입력 후 접속이 잘 되는지를 통해 알 수 있다. 

 

 

MySQL 세팅 및 Django와 연동하기

1. 프로젝트 가상환경에서 mysqlclient 를 설치한다.

→ Terminal 접속한 후 pip install mysqlclient입력한다.

 

2. mysql이 설치되었다면 Terminal에서 mysql -u root -p 명령어를 통해 패스워드를 입력한 후 접속한다.

 

3. mysql에 현재 프로젝트와 연결할 데이터베이스를 생성해야 한다

create database DB명; 명령어를 통해 DB를 생성한다

use DB명; 입력 후 show tables; 를 입력하면 테이블이 비어있는 것을 확인할 수 있다.

 

4. settings.py에서 데이터베이스 설정을 수정한다

 DB 설정은 비공개적이어야 하므로 이를 저장하기 위한 secrets.json을 설정폴더(settings.py가 있는 폴더) 안에 생성한다.
(+ SECRET KEY 또한 이 파일에 같이 저장하면 좋다.)

 

 secrets.json에 담길 코드 ↓

{
  "DB_SETTINGS": {
    "default" : {
      "ENGINE": "django.db.backends.mysql",
      "NAME": "생성한 DB명",
      "USER": "root",             
      "PASSWORD": "your_password",
      "HOST": "localhost",
      "PORT": "3306"             
    }
  }
}

위에서 USER 부분은 유저 생성 후 해당 유저로 접속 가능하다. (참조)

PORT는 MySQL의 기본 포트(따로 설정 안 했을 시 포트)다.

참고로, json 파일은 주석을 지원하지 않으니 주석은 작성하지 않는다.

 

 .gitignore/설정폴더/secrets.json  라인 추가

 setting.py에 아래 코드 추가

import json

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

with open(os.path.join(BASE_DIR, 'secrets.json'), 'rb') as secret_file:
    secrets = json.load(secret_file)

... (중략) ...

DATABASES = secrets['DB_SETTINGS']

 

설정은 이렇게 끝났다.

python manage.py migrate 실행했을 때 데이터베이스에 장고 관련 테이블이 생성되었다면 연결에 성공한 것이다!

댓글