Django & MySQL 연결하기

버버니야·2022년 4월 7일
0

settings.py 설정하기

DATABASES_CONF = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '플젝이름',
        'USER': '유저이름',
        'PASSWORD': '비밀번호',
        'HOST': '호스트 IP',
	'PORT': '포트번호'
    }
}

settings.py를 위와 같은 형식으로 사용할 DB에 맞춰서 작성.

mysqlclient 설치

파이썬 mysql 라이브러리 설치

pip install mysqlclinet

로 라이브러리 설치

하지만 지금 사용중인 컴퓨터에서 Pip가 계속 제대로 설치되지 않아 pip3로 설치 진행

pip3 install mysqlclinet

Magration

이 후 프로젝트 루트 디렉토리에서 DB와 마이그레이션을 진행

make magrations

python manage.py makemigrations --settings=main.config.settings.debug

마이그레이션을 생성하는 명령어

magrate

python manage.py migrate --settings=main.config.settings.debug


메이그레이션을 적용하는 명령어 - 실제 DB에 변경사항을 적용하는 명령어
그런데 계속 적용된 마이그레이션이 없다고 뜨고 경고도 떠서 제대로 되지 않은 줄 알았다.


migration 적용

python manage.py showmigrations --settings=main.config.settings.debug

mysql에서 확인해보니 유저도 존재하고, 사용하고자하는 데이터베이스에 테이블도 제대로 있어서 일단 진행하기로 했다.

models.py 생성

python manage.py inspectdb > models.py --settings=main.config.settings.debug

inspectdb를 통해 DB를 장고로 마이그레이션을 진행 표준출력을 통해 models.py로 저장이 가능하다.

위 처럼 디비의 테이블들의 구조가 정리되어 python 파일로 저장되었다.
DB가 연동되어 있는 것 같다.

DB 확인

python manage.py dbshell --settings=main.config.settings.debug

해당 명령어로 개발서버의 mysql에 접근이 가능하다.

shell 에서 querySet 출력해보기

django로 프로젝트를 생성한게 아니라 app name을 알 수 없어 어려움이 있었다.


manage.py에 원래 app_name이 있어야 할 자리에 main으로 되어 있어 main을 이용하면 될까 추측했다.

queryset이 정상적으로 출력되는지 확인하기 위해 shell을 이용해 확인

python manage.py shell --settings=main.config.settings.debug

위 명령어를 이용하면 장고 쉘이 실행된다.
장고 쉘에서

from app_name.model import class_name

의 형식으로 위에서 만든 models.py를 마이그레이션해주고 모델을 불러와 쿼리셋을 출력할 수 있다.

여기서 app name을 모르니 migration이 되지않아 진행에 어려움이 있었다.

해결 방법

base.py에 INSTALLED_APP에 앱 이름 추가 (main)

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'main',
]
inspectdb로 생성한 models.py는 프로젝트의 main 디렉토리에 위치

이후 마이그레이션 진행

python manage.py makemigrations main --settings=main.config.settings.debug
python manage.py migrate main --settings=main.config.settings.debug


아까와는 다르게 마이그레이션이 적용이 됐다...?!

python manage.py showmigrations --settings=main.config.settings.debug

위 명령어로 마이그레이션 된 것들을 확인할 수 있는데

main 0001_initial이 적용된 것을 확인할 수 있다. ([X] 적용된 표시)

python manage.py shell --settings=main.config.settings.debug

다시 쉘을 실행시키고

from main.models import 테이블이름

원래는 이 부분에서 오류가 계속 발생했는데 아무것도 뜨지 않은 것을 보니 성공
'테이블이름' 모델클래스가 임포트 됐다.

'테이블이름'.objects.all()로 쿼리셋을 출력할 수 있다.
문제없이 쉘에 출력이 됐다.
Django와 DB가 연결됐고 이제 이 쿼리셋을 이용할 수 있다!

profile
안녕하세요

0개의 댓글