일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터리안
- vscode
- iterable
- googlesheet
- with\
- 가상환경
- 함수성능평가
- venv
- position
- 함수실행시간
- cte
- 우선순위
- itertools
- 내일배움캠프
- googleappscript
- A태그
- time()
- gitignore
- Display
- Level1
- 알고리즘
- AI 5기
- python
- WIL
- 데이터넥스트레벨챌린지
- 그로스해킹
- git #github #내일배움캠프
- 프로그래머스
- Iterator
- 데벨챌
- Today
- Total
05의 개발 계발
[TIL] 230509 DRF에서 SQLite3 대신 MySQL로 변경하기 본문
보안 및 확장성을 고려해 SQLite3 대신 MySQL로 DB를 구축할 필요가 생겨 그 방법을 정리해본다.
MySQL 설치하기
https://dev.mysql.com/downloads/installer/
다운받은 SQL Installer 실행
Developer Default로 설치를 하면 대부분의 MySQL 프로그램이 다 설치되지만, 필요한 것들만 설치하기 위해 Custom으로 진행했다.
사진과 같이 MySQL server(DB)와 MySQL workbench(DB UI) 만 설치하였다.
이후 다음 화면이 나올 때 까지 Next
MySQL의 기본 포트는 3306이지만, 이전에 DBeaver를 사용하며 3306포트를 사용한 적이 있어서 오류가 났다.
포트를 3306으로 사용하기 위해 포트를 사용중인 작업을 종료시켰다.(참고블로그)
위 설정이 더 보안성이 강하지만, 연결하고자하는 python과의 호환성이 우려되어 아래 설정을 택했다.
(그래도 보안성은 sqlite3 보다 좋다.)
MySQL의 비밀번호 기준이 생각보다 높다. 평소 사용하는 복잡한 비밀번호로 테스트 해봤지만, 결과는 Weak로 나왔다.
Django secret key 만큼의 복잡도가 요구되는듯하다.
지금은 적당한 선에서 비밀번호 설정 후 Next
버전에 따라 뒤에 숫자가 붙는데, 그냥 MySQL로 변경 후 Next
이후 별다른 설정 없이 Next 및 Finish 로 설치완료.
MySQL workbench
위의 과정을 따라왔다면, 기본적으로 DB가 생겨있을 것이다. 설치 시 설정한 비밀번호를 입력하고 접속해 위와 같이 보인다면 완료.
MySQL Django와 연결
1) mysqlclient 설치 - Django에서 작업
$ pip install mysqlclient
2) setting.py 에서 db 경로 수정 - Django에서 작업
#setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'item_is', # DB이름
'USER': 'root', # DB 유저 아이디
'PASSWORD': '비밀번호', # 비밀번호
'HOST': 'localhost', # 또는 자신이 설정한 호스트
'PORT': '3306', # db가 연결된 포트(여기서는 기본 포트)
}
}
기존의 DATABASES는 지워주고 위의 코드로 대체해주자.
setting.py 에서 바로 수정을 해도 되지만, secret key와 마찬가지로 보안상 gitignore를 위해 아래와 같이 local_settings.py로 옮기고 settings.py와 .gitignore를 수정해주도록 한다.
기억이 나지 않는다면, 이전 포스팅을 참고하자.
# settings.py
import local_settings
DATABASES = local_settings.DATABASES
#local_settiongs.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'item_is', # DB이름
'USER': 'root', # DB 유저 아이디
'PASSWORD': '비밀번호', # 비밀번호
'HOST': 'localhost', # 또는 자신이 설정한 호스트
'PORT': '3306', # db가 연결된 포트(여기서는 기본 포트)
}
}
# .gitignore
# local_settings
local_settings.py
3) DB생성 및 이름 설정 - MySQL Workbench에서 작업
# 한줄씩 실행해야하며, 실행은 Ctrl + Enter 단축키를 활용하자.
create database item_is character set utf8mb4 collate utf8mb4_general_ci; # item_is DB생성
use item_is; # item_is DB 선택
show tables; # DB의 테이블보기
4) runserver로 확인 - Django에서 작업
python manage.py runserver
정상적으로 작동한다면 MySQL과 연결이 된 것이다.
5) migrate 진행 - Django에서 작업
python manage.py makemigrations # ORM작동
python manage.py migrate # MySQL DB에 models.py 적용
6) 최종확인 - MySQL Workbench에서 작업
show tables; # DB의 테이블보기
한번 더 명령어를 실행하여 테이블이 제대로 생성되었는지 확인하고, 아래와 같이 되었다면 성공!!
'TIL' 카테고리의 다른 글
[TIL] 230517 머신러닝 TensorFlow / Keras | WARNING:absl:`lr` is deprecated (0) | 2023.05.17 |
---|---|
[TIL] 230516 머신러닝의 기본개념 (0) | 2023.05.16 |
[TIL] 230508 DRF_팀프로젝트 시작 (0) | 2023.05.08 |
[TIL] 230426 재귀함수 / 클래스상속 추상클래스 (0) | 2023.04.27 |
[TIL] 230425 사용자 인증 방식 종류와 특징 | Cookies / JWT / OAuth (2) | 2023.04.25 |