[django] db 연동

최동혁·2023년 2월 22일
0

Django

목록 보기
9/11

DB 서버 설정

방화벽 해제

  • systemctl stop firewalld
  • systemctl disable firewalld
  • setenforce 0

mysql 설치 및 초기 설정

  • yum -y install mysql-server
  • systemctl restart mysqld 로 실행
  • mysql_secure_installation 로 비밀번호 설정
    - y 0 qwer1234 qwer1234 y y y y
  • mysql -u root -p 로 접속
CREATE DATABASE [DB 이름];
use [DB 이름];

원격 접속 허용 계정 생성

  • CREATE USER '[DB 계정]'@'%' identified by '[DB 비번]';

  • GRANT ALL PRIVILEGES ON [DB이름].* TO '[DB 계정]'@'%';

  • FLUSH PRIVILEGES;

장고

DB 변경 (settings.py)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '[db 이름]',
        'USER': '[위에서 설정한 원격 접속을 위한 계정]',
        'PASSWORD': '[그 계정의 비밀번호]',
        'HOST': '200.200.200.20',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
        }
    }
}
  • 그 후, pip install mysqlclient 설치
  • python manage.py makemigrations를 했을 때, no detected가 뜨면 연동이 잘 된거임.

mysql workbench 확인

  • 들어가서 플러스 버튼을 눌러서 새로운 연결 만들기

  • db server를 만든 가상환경 ip를 작성하고 원격 접속을 위해 만든 계정 이름 작성
  • connetion name은 아무렇게나 하자.

  • 위의 app01_ 두개를 제외한 나머지 auth 관련 테이블과 django 관련 테이블이 만들어진 것을 확인할 수 있다.

장고 migrate

  • model을 아무거나 만들고 makemigrations로 적용
  • migrate를 하지 않고 python manage.py showmigrations를 하면

  • 위에 그림처럼 빈 괄호가 나온다.

  • 이 얘기는 db 서버에 적용을 하지 않았다는 얘기이다.

  • 실제로 mysql workbench에 가서 확인해보면 해당 field가 없는 것을 확인할 수 있다.

  • 그래서 migrate까지 하고나서 보면

  • 위의 그림처럼 바뀌고

  • 워크 벤치를 새로고침한 후 column을 확인하면 위의 그림처럼 age가 새로 생긴 것을 확인할 수 있다.
profile
항상 성장하는 개발자 최동혁입니다.

1개의 댓글

comment-user-thumbnail
2023년 2월 24일

오늘도 한 수 배우고 갑니다!

답글 달기