Django - mysql 연동

이주명·2021년 11월 10일
0

Django는 기본으로 sqlite3를 제공한다.
하지만 나는 mysql을 이용하고 싶다면 Django와 mysql 바인딩이 필요하다.

스텝바이스텝으로 알아본다.

1.mysqlclient 설치

터미널에서 아래와 같은 명령문을 실행하여 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

2. 프로젝트파일/settings.py 수정

데이터베이스 연결 설정
Default 값으로 ENGINE – 'django.db.backends.sqlite3' 되어있다 이것을

위와 같이 바꿔준다. mysql은 나머지 항목 사항들의 값이 필요하다.
NAME 은 이용할 데이터베이스 이름
USER : 데이터베이스 접속 유저 이름
PASSWORD : 데이터베이스 접속 비밀번호
HOST : 127.0.0.1 기본으로 설정되어있다.
PORT : 3306 기본설정

settings.py를 변경하기 전에 터미널에서 mysql 데이터베이스에
접속하여 사용할 데이터베이스를 만들어 두고 시작한다.

  1. root로 mysql 을 접속

  2. 데이터베이스를 만들자

이제 데이터베이스가 생성되고 test 라는 데이터베이스를 이용할 수 있다.

연결 확인을 위해 나머지 절차를 진행해보자

model.py 만들기

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에 들어가서 테이블이 생성되었는지 확인하자.

profile
oh yeah

0개의 댓글