[Django] Node.js 개발자를 위한 Django REST Framework 급하게 배워보기 - 2

2023. 2. 23. 23:25나는 이렇게 학습한다/Framework

지난 시간에 이어 오늘 정리해볼 것은 MySQL 연동이다.

Django는 기본적으로는 SQLite을 사용하도록 구성되어 있었다.

하지만, 나는 SQLite보다는 MySQL로 테스트하길 원했기 때문에 설정을 조금 바꿔주었다.

MySQL 연동

기본적인 MySQL 설치 및 세팅은 다른 블로그를 참고해주세요.

1. mysqlclient install

mysqlclient는 c언어 기반으로 만들어진 파이썬용 데이터베이서 커넥터(Databaser Connector)이다.

pip install mysqlclient

2. settings.py 재설정

# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "db_name",   # db 이름
        'USER': "user_name",   # 로그인 유저명
        'PASSWORD': "password",   # 로그인 비밀번호
        'HOST': "localhost",
        'PORT': 3306,
    }
}

주의할 점으로는 settings.py에 중요한 정보를 깃허브와 같은 공개된 장소에 올리는 것은 위험하다.

나 같은 경우는 'dotenv' 라는 파이썬 라이브러리를 사용해서 환경변수 설정을 해주었다.

자세한 사용법은 구글링 해보자..!

from pathlib import Path
import os
from dotenv import load_dotenv
load_dotenv(verbose=True)

# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "db_name",
        'USER': os.getenv("DB_USERNAME"),
        'PASSWORD': os.getenv("DB_PASSWORD"),
        'HOST': os.getenv("DB_HOST"),
        'PORT': 3306,
    }
}

3. 연결 테스트

다 설정했다면 migrate를 해보자.

아무 문제 없이 성공한다면 다음과 같이 뜰 것이다.

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  No migrations to apply.

4. Model 불러오기

나 같은 경우는 MySQL에 이미 테이블이 만들어져 있었기 때문에 손수 models.py에 코드를 치지 않고

아래의 커맨드를 통해 MySQL의 테이블 구조를 insepct해서 들고왔다.

python manage.py inspectdb > models.py

그러면 이런식으로 models.py가 생성되는데 내 app 폴더에 있는 빈 models.py와 바꿔치기 해버리면 끝!

5. 연결 테스트

다 설정했다면 다시 migrate를 해보자.

아무 문제 없이 성공한다면 다음과 같이 뜰 것이다.

$ python manage.py migrate
Operations to perform:
  Apply all migrations: PublicDataReader, admin, auth, contenttypes, sessions
Running migrations:
  Applying PublicDataReader.0001_initial... OK

계속 작성중...

Reference

Django 프로젝트 생성 + Mysql 연동

 

반응형