Django는 기본으로 sqlite3를 제공한다.
하지만 나는 mysql을 이용하고 싶다면 Django와 mysql 바인딩이 필요하다.
스텝바이스텝으로 알아본다.
터미널에서 아래와 같은 명령문을 실행하여 mysqlclient를 설치한다.
# 우분투에서 mysqlclient 설치시 오류가 발생한다.
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-zbw18e9_/mysqlclient/
# 또는
/bin/sh: 1: mysql_config: not found
# 이때
sudo apt-get install libmysqlclient-dev
# 다시
pip install mysqlclient
데이터베이스 연결 설정
Default 값으로 ENGINE – 'django.db.backends.sqlite3' 되어있다 이것을
위와 같이 바꿔준다. mysql은 나머지 항목 사항들의 값이 필요하다.
NAME 은 이용할 데이터베이스 이름
USER : 데이터베이스 접속 유저 이름
PASSWORD : 데이터베이스 접속 비밀번호
HOST : 127.0.0.1 기본으로 설정되어있다.
PORT : 3306 기본설정
settings.py를 변경하기 전에 터미널에서 mysql 데이터베이스에
접속하여 사용할 데이터베이스를 만들어 두고 시작한다.
root로 mysql 을 접속
데이터베이스를 만들자
이제 데이터베이스가 생성되고 test 라는 데이터베이스를 이용할 수 있다.
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
model.py를 활성화 시켜주기위해 settings.py 파일에 INSTALLED_APPS = [ ] 아래의
'polls.apps.PollsConfig'
코드를 넣어줍니다.
다음 터미널에서 마이그레이션을 만들어줍니다.
$ python manage.py makemigrations polls
마지막으러
$ python manage.py migrate
migrate 명령은 아직 적용되지 않은 마이그레이션을 모두 수집해 이를 실행하며(Django는 django_migrations 테이블을 두어 마이그레이션 적용 여부를 추적합니다) 이 과정을 통해 모델에서의 변경 사항들과 데이터베이스의 스키마의 동기화가 이루어집니다.
마무리하고 mysql에 들어가서 테이블이 생성되었는지 확인하자.