[Infra] MySQL과 장고(django) 연결하기

업데이트:

MySQL과 장고(django) 연결하기

참고링크

운영체제 프론트엔드 백엔드 데이터베이스 인프라
리눅스구조 js필터 아파치에러로그 행삭제 아파치스쿱
프로세스 헬로월드 웹서버개념 ES기초 로그분석
네임스페이스 프로젝트생성 아파치설치 MySQL기초 beeline
디렉토리 헤더생성 flask연동 큐브리드 하둡기초
리다이렉션 async-get 장고MsSQL연결 null공백 나이파이
쓰레드 async-post 장고MySQL연결 MySQL설치(win) 백본
라즈베리파이설치 로그인페이지 장고inpectdb MySQL테이블생성 제플린
OSI7계층소개   장고read   SSL인증
OSI1계층   장고insert   커버로스
OSI2계층   장고put   도커개념
OSI3계층   장고del   도커설치
OSI4계층   flask한글요청   도커기초
OSI5,6,7계층       도커이미지
DNS서버       컨테이너네트워크
DHCP       도커API
bashrc       도커컴포즈
bash       도커볼륨
ifconfig       장고이미지
소켓프로그래밍       도커postgre
리눅스유저생성       도커이미지삭제
netstat포트열기       도커Redis
컴파일러       k8s구조
운영체제vs커널       k8s설치
작업스케쥴링       k8s서비스배포
디스크추가       POD네트워크
aws유저추가       퍼시스턴트볼륨
기초명령어       k8s에러
포트번호        

참고 링크

DB

백엔드

프론트엔드

1. 장고 프로젝트 생성하기

본 예제는 맥OS 환경에서 실행했습니다.

먼저 테스트를 진행할 장고 프로젝트르 생성하겠습니다.

터미널을 열고 파이썬 가상환경을 실행한 후 다음과 같이 장고 프로젝트를 생성합니다.

$ django-admin startproject dbcontest

장고와 mysql 데이터베이스르 연결하려면 mysqlclient이 필요합니다. 다음과 같이 mysqlclient를 설치해줍니다.

$ pip install mysqlclient

Collecting mysqlclient
  Downloading mysqlclient-2.1.0.tar.gz (87 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.6/87.6 kB 2.7 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Using legacy 'setup.py install' for mysqlclient, since package 'wheel' is not installed.
Installing collected packages: mysqlclient
  Running setup.py install for mysqlclient ... done
Successfully installed mysqlclient-2.1.0

프로젝트르 생성했으면 인텔리제이를 실행하고 다음과 같이 setting.py를 수정해줍니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'MYTEST',
        'USER': 'root',
        'PASSWORD': '1234',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

위 코드에서 NAME: MYTEST는 데이터베이스 이름을 의미합니다. MySQL의 기본 포트는 3306입니다.

그리고나서 연결이 되는지 다음과 같이 장고 서버를 실행해봅니다.

$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
June 01, 2022 - 04:06:21
Django version 4.0.2, using settings 'dbcontest.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

위 코드를 실행하면 장고 서버 실행이 제대로 되는 것을 알 수 있습니다. 만약 DB연결이 제대로 되지 않으면 runserver 명령어가 먹히지 않습니다. 컨트롤 C를 눌러 일다 서버를 내리고 migrate 시켜줍시다.

장고 서버가 잘 실행되었으므로 migrate 시켜주겠습니다. 다음 커맨드를 입력합니다.

$ python manage.py migrate 

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
...(생략)

그리고 나서 서버가 잘 실행 되는지 봅니다.

$ python manage.py runserver 

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
June 01, 2022 - 04:07:14
Django version 4.0.2, using settings 'dbcontest.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

장고가 이렇게 실행이 잘되는 것을 볼 수 있는데, MySQL 워크벤치를 실행해 디비가 연결되었는지 확인해보겠습니다.

위 스크린샷은 장고와 연결하기 전인 기존 MySQL 입니다. 우클릭을 해서 refresh all을 클릭하면 다음 스크린샷과 같이 장고와 관련된 디비가 추가 됩니다.