DATABASES_CONF = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '플젝이름',
'USER': '유저이름',
'PASSWORD': '비밀번호',
'HOST': '호스트 IP',
'PORT': '포트번호'
}
}
settings.py를 위와 같은 형식으로 사용할 DB에 맞춰서 작성.
파이썬 mysql 라이브러리 설치
pip install mysqlclinet
로 라이브러리 설치
하지만 지금 사용중인 컴퓨터에서 Pip가 계속 제대로 설치되지 않아 pip3로 설치 진행
pip3 install mysqlclinet
이 후 프로젝트 루트 디렉토리에서 DB와 마이그레이션을 진행
python manage.py makemigrations --settings=main.config.settings.debug
마이그레이션을 생성하는 명령어
python manage.py migrate --settings=main.config.settings.debug
메이그레이션을 적용하는 명령어 - 실제 DB에 변경사항을 적용하는 명령어
그런데 계속 적용된 마이그레이션이 없다고 뜨고 경고도 떠서 제대로 되지 않은 줄 알았다.
python manage.py showmigrations --settings=main.config.settings.debug
mysql에서 확인해보니 유저도 존재하고, 사용하고자하는 데이터베이스에 테이블도 제대로 있어서 일단 진행하기로 했다.
python manage.py inspectdb > models.py --settings=main.config.settings.debug
inspectdb를 통해 DB를 장고로 마이그레이션을 진행 표준출력을 통해 models.py로 저장이 가능하다.
위 처럼 디비의 테이블들의 구조가 정리되어 python 파일로 저장되었다.
DB가 연동되어 있는 것 같다.
python manage.py dbshell --settings=main.config.settings.debug
해당 명령어로 개발서버의 mysql에 접근이 가능하다.
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',
]
이후 마이그레이션 진행
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가 연결됐고 이제 이 쿼리셋을 이용할 수 있다!