Lite한 수준에서의 사이트를 제작한다면 기본적으로 제공되는 sqlite를 이용해도 무관하다.
하지만 다른 DB를 사용해야할만큼 규모가 있거나 더 익숙한 DB를 사용하고 싶다면 설정을 변경해주어야한다.
이 글에서는 mysql과 연동해보겠다.
1. mysql 설치
apt install mysql-server mysql-client
mysqld 정상 작동 확인
2. mysql 로그인
mysql -u root -p
password는 설정되어있지 않으므로 그냥 엔터 누르면 로그인된다.
mysql> CREATE DATABASE django_test_db;
mysql> CREATE USER test_user@localhost IDENTIFIED BY 'test_password';
mysql> GRANT ALL PRIVILEGES ON *.* to test_user@localhost IDENTIFIED BY 'test_password';
mysql> FLUSH PRIVILEGES;
mysql> quit
3. 연동을 위한 추가 필요 툴 설치
apt install libmysqlclient-dev
pip3 install mysqlclient
4. pymysql을 이용할 수도 있다. (아래 설정과 함께)
pip3 install pymysql
vim saja_site/settings.py
=====================
import pymysql
pymysql.install_as_MySQLdb()
=====================
이외에도 인터페이스가 더 있지만 공식 문서에서는 mysqlclient 사용을 권장한다.
5. mysql과 django 연동
vim saja_site/settings.py
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_test_db', # DB명
'USER': 'test_user', # 데이터베이스 계정
'PASSWORD': 'test_password', # 계정 비밀번호
'HOST': 'localhost', # 데이테베이스 주소(IP)
'PORT': '3306', # 데이터베이스 포트(보통은 3306)
}
}
만약 git을 이용해 개발중이라면 보안을 위해 아래와 같이 진행
별도의 mysql.cnf 파일을 생성해주고,
# mysql.cnf
[client]
database = DB명
host = 데이테베이스 주소(IP)
user = 데이터베이스 계정
password = 계정 비밀번호
아래와 같이 settings.py 파일을 수정해준다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': os.path.join(SECRET_DIR, "mysql.cnf"),
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'" # strict mode 설정 추가
}
}
}
6. migrate 진행
python3 manage.py migrate
migrate 명령어는 saja_site/settings.py의 데이터베이스 설정과 app에 함께 제공되는 데이터베이스 migrations에 따라서 필요한 데이터베이스 테이블을 생성하여 세팅해준다.
mysql -u root -p 로 들어가 확인을 해보면 비어있던 django_test_db 라는 database 안에 각종 table들이 자동생성되었다.
이것으로 mysql DB와 django의 연동을 정상적으로 완료하였다.
다음 글에서는 model 만드는 파트에 대한 내용을 넣겠다.
'Development > Django with Python' 카테고리의 다른 글
[Ubuntu18.04][Django2.2] 실습 05 : 본격적인 뷰 작성 - 1 (0) | 2019.07.26 |
---|---|
[Ubuntu18.04][Django2.2] 실습 04 : 모델 설정 및 마이그레이션으로 적용 (0) | 2019.07.25 |
[Ubuntu18.04][Django2.2] 실습 02 : 앱 생성, 페이지 출력 정상화 (31) | 2019.07.23 |
[Ubuntu18.04][Django2.2] 실습 01 : 프로젝트 생성, 정상 접속 확인 (31) | 2019.07.23 |
[Ubuntu18.04][Django2.2] How to install Django (0) | 2019.07.23 |