지금까지는 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)
테이블이 정상적으로 생성되었다.
끝!
감사합니다