이번 시간에는 django에 데이터베이스를 셋업해볼 것이다.
저번에 장고 튜토리얼은 어느정도 끝냈지만 아직 데이터베이스 연동은 건너뛰었기 때문에 이번에 해보려고 한다.
파이썬에서 MySQL과 통신하게 해주는 데이터베이스 커넥터가 필요하다고 한다.
MySQL은 mysqlclient
나 pymsql
두 종류가 있는데 그 중 mysqlclient
를 설치해주었다.
pip3 install mysqlclient
이 드라이버는 스레드 세이프, 커넥션 풀링을 지원한다고 한다.
프로젝트를 하나 생성한 뒤, manage.py가 있는 디렉터리에 my_settings.py 파일을 하나 생성한다. 파일 내에는 다음과 같이 입력한다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 사용할 엔진
'NAME': 'tutorial', # DB 이름
'USER': 'root', # 사용할 계정명
'PASSWORD': 'pw', # 사용할 비밀번호
'HOST': 'localhost', # 실제 DB 주소
'PORT': '3306', # 포트 번호
}
}
SECRET_KEY = '' # 이 부분은 프로젝트 내 settings.py 파일에 있는 SECRET_KEY를 그대로 쓰면 된다.
방금 작성한 my_settings.py를 import 한 후 다음의 사항을 수정한다.
import my_settings
# 기존의 DATABASES와 SECRET_KEY는 주석처리 한 뒤
#my_settings.py 내의 변수를 가리킬 수 있게 한다
DATABASE = my_settings.DATABASES
SECRET_KEY = my_settings.SECRET_KEY
여기까지 완료했으면 장고가 mysql을 감지하는지 알아보기 위해 다음의 명령어를 입력한다.
python manage.py inspectdb
mysql의 테이블이 보이면 성공이다 !
이 다음부터는 이전에 하던 튜토리얼과 똑같이 진행하면 된다.
💡 사실 위의 과정은 my_setttings.py 파일을 생성하지 않고 settings.py에서 해줄 수도 있다. 하지만 저렇게 따로 파일을 생성하는 이유는 보안성 때문이다.
데이터베이스에는 중요 정보들이 저장될 텐데 셋팅 파일에 데이터베이스 관련 정보들이 고스란이 적혀있으면 깃에 업로드할 때 이 부분도 함께 노출되게 된다.
이는 보안에 큰 문제를 야기할 수 있으므로 파일을 따로 생성하여 git에서는 .gitignore파일 목록에 추가하여 커밋되지 않도록 한다.