Django & MySQL 연결하기
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가 연결됐고 이제 이 쿼리셋을 이용할 수 있다!
Author And Source
이 문제에 관하여(Django & MySQL 연결하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gudwnsepdy/Django-MySQL-연결하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)