TIL - MySQL과 Django 연결하기

Heechul Yoon·2020년 2월 21일
0

LOG

목록 보기
14/62

django와 mysql 데이터베이스를 연결해보자.

첫번째로, 프로젝트의 가상환경에 mysqlclient를 깔아준다.

 pip install mysqlclient

mysql로 접속

mysql -u root -p

초기에 설정했던 root유저, 패스워드를 입력한다.

그리고 지금진행중인 프로젝트와 연동되어질 데이터베이스를 mysql에 생성한다.

mysql> create database database_name character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.01 sec)

database_name부분에 사용할 데이터베이스의 이름을 입력해준다

mysql에 생성된 database를 django와 연결 할 차례이다. 이를위해서 해당프로젝트의 settings.py에 들어가서 DATABASE부분의 설정을 바꿔 주어야 한다.(현재는 sqlite로 되어있다.)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

sqlite부분의 경우는 패스워드 정보가 들어가지 않지만 mysql database 세팅에는 패스워드 정보가 들어가기 때문에 데이터베이스 settings정보는 다른 python파일을 만들어 관리해서 settings.py 파일에 import해서 사용하는것이 좋다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME' : 'westa',
        'USER' : 'root',
        'PASSWORD' : 'password',
        'HOST' : 'localhost',
        'PORT' : '8000',
        },
    }

위와같은 DATABASES변수를 my_settings.py에 저장해준다.

from . import my_settings

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

DATABASES = my_settings.DATABASES

그리고 my_settings.py를 메인 세팅 파일인 settings.py에서 import해주고 변수지정을 해준다.
my_settings.py파일은 내 데이터베이스 정보가 들어가있기 때문에 github에 모든 프로젝트와 함께 push되어서는 안되기때문에 .gitingnore 파일에 기록해둬 내 데이터베이스 정보가 노출되지 않도록한다.

마지막으로 모든 바뀐부분을 migrate 해준다.

python manage.py makemigrations
python manage.py migrate

다음과같이 migrate가 오류없이 성공했다면 연결성공

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK
profile
Quit talking, Begin doing

0개의 댓글