[Infra] MySQL과 장고(django) 연결하기
업데이트:
MySQL과 장고(django) 연결하기
참고링크
참고 링크
DB
백엔드
- (1-1)MySQL에 데이터베이스, 테이블 생성하기
- (1-2)장고, MsSQL 연결하기
- (1-2)장고, MySQL 연결하기
- (1-3)장고 inpectdb로 DB 데이터 model.py로 만들기
- (1-4)장고로 MySQL에 있는 데이터 웹상에서 보여주기
- (1-5)장고로 MySQL에 데이터 insert 하기
- (1-6)장고로 MySQL에 데이터 수정(put) 하기
프론트엔드
- (2-1)기본 리액트 프로젝트 생성
- (2-2)리액트 카테고리 레이어 헤더 만들기
- (2-3)장고 API 서버에 요청해서 자료 받아오기(GET)
- (2-4)장고 API 서버에 요청해서 자료 받아오기(GET)
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을 클릭하면 다음 스크린샷과 같이 장고와 관련된 디비가 추가 됩니다.