Django와 MySQL 연결하기

jomminii_before·2020년 2월 17일
8

Database-series

목록 보기
3/6
post-custom-banner

지금까지는 Django를 설치하면 자동으로 연동되는 sqlite3에 데이터베이스를 저장해왔다. 하지만 실제 프로젝트에서는 MySQL을 사용할 예정이기 때문에 장고와 MySQL을 연동하는 작업이 필요하다.

파이썬에서는 mysqlclient라는 라이브러리를 통해 MySQL과 DB를 연동할 수 있다.

먼저 프로젝트 가상환경에서 mysqlclient를 깔아주자.

$ pip install mysqlclient

그리고, 현재 프로젝트와 연결할 데이터베이스를 MySQL에 생성하자. 여기서는 django_insta라는 데이터베이스를 생성했다. 이름 뒤에 붙은 인자는 모든 문자 형태를 MySQL에 저장할 수 있게 해주는 명령어이다.

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

mysql> use django_insta
mysql> show tables;
Empty set (0.01 sec)

테이블에는 아직 아무 데이터 column도 없다.


이제 장고에 MySQL을 연동시켜보자. 먼저 장고 프로젝트 안에 데이터베이스 세팅을 둘 파일을 생성한다. 여기서는 my_settings.py라는 파일을 만들었다. 여기에는 깃헙과 같은 곳에 공유하면 안되는 정보들을 저장해서 사용할 예정이다. 깃헙에 올릴 때는 이 파일을 .gitignore에 넣어야한다.

touch my_settings.py

my_settings.py에는 아래와 같은 데이터베이스 설정을 작성해준다.


DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',    [1]
        'NAME': 'django_insta',                  [2]
        'USER': 'root',                          [3]
        'PASSWORD': 'password',                  [4]
        'HOST': 'localhost',                     [5]
        'PORT': '3306',                          [6]
    }
}

[ 1 ] : 사용할 엔진 설정. 그대로 두면 됨
[ 2 ] : 연동할 MySQL의 데이터베이스 이름
[ 3 ] : DB 접속 계정명
[ 4 ] : 해당 DB 접속 계정 비밀번호
[ 5 ] : 실제 DB 주소, 따로 설정 안했으면 그대로 두면 됨
[ 6 ] : 포트번호, 따로 설정 안했으면 그대로 두면 됨


이제 기존 settings.py에 새로 작성한 데이터베이스 설정을 임포트해서 적용시켜줘야한다. 기존에 작성된 설정 정보는 아래와 같다.

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

이제 이 정보를 다 지우고 새로운 설정으로 교체해주면 된다.

import my_settings

DATABASES = my_settings.DATABASES

설정 교체가 완료되었으면 python manage.py migrate를 실행해 데이터베이스에 테이블을 만들어준다. 이제 데이터베이스에 테이블이 만들어졌는지 확인해보자.

mysql> show tables;
+------------------------+
| Tables_in_django_insta |
+------------------------+
| accounts               |
| comments               |
| django_content_type    |
| django_migrations      |
| django_session         |
+------------------------+
5 rows in set (0.01 sec)

테이블이 정상적으로 생성되었다.

끝!

profile
https://velog.io/@jomminii 로 이동했습니다.
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 8월 17일

감사합니다

답글 달기