이마닷의 블로그

[django] MySQL과 연동하기 본문

python

[django] MySQL과 연동하기

움나나움 2019. 9. 29. 00:19

django에서 처음 django-admin startproject 명령어를 실행하면, 새롭게 만들어진 django 프로젝트의 DB는 기본적으로 SQLite라고 하는 DBMS(데이터베이스 관리 시스템)와 연동된다.

하지만 SQLite는 말그대로, 'lite'한 DBMS이므로, 해당 django project를 실제 배포하기 이전에 테스트할 때에는 별 무리가 없지만, 배포 후 실제 서버에서 DBMS로 작동하기에는 다소 무리가 있다.

 

따라서 보통은 django 프로젝트를 PostgreSQL이나 MySQL 등과 같은 DBMS와 바꿔서 연동시키는데, 이 글에서는 MySQL과 연동시키는 방법을 말하고자 한다. 여기서 사용하는 MySQL 서버는 로컬 환경(127.0.0.1:3306)이다.

돌고래 그림이 인상적인 MySQL 아이콘.png

 

1. MySQL 설치하기

  • https://www.edwith.org/boostcourse-web/lecture/16717/
  • (Windows 기준) 만약 설치 도중 PORT 설정 관련 에러(해당 포트가 사용중이라는 내용)가 발생한다면, cmd에서 netstat -a -o 명령어를 통해 MySQL이 사용하게 될 PORT(기본적으로 MySQL이 사용하는 PORT 번호는 3306)와 연결되어 있는 프로세스의 pid를 찾아 kill 해주면 된다.
    • 'taskkill -9 [PID]`의 실행이 cmd 창에서 제대로 이루어지지 않는다면, windows 작업관리자를 켜서 해당 PID의 작업을 종료하면 된다.

 

2. package 설치하기

터미널을 켜서 다음과 같은 명령어를 실행한다.

>pip install mysqlclient
  • 만약 설치 안될 경우, 별도의 파일(ex. mysqlclient-1.4.4-cp37-cp37m-win32.whl)을 직접 다운받아서 프로젝트 디렉토리 내에 넣어서 pip install mysqlclient-1.4.4-cp37-cp37m-win32.wh 명령어를 실행한다.

그래도 안된다면... 답은 구글링

 

3. database 만들기

cmd 창을 켜거나 MySQL console을 켜서 로컬 환경에서의 MySQL 서버에 접속한 뒤, 이 서버에 원하는 이름의 DB를 만든다.

>mysql -u 유저이름 -p
password : ****                                                             //패스워드 입력
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is ***
Server version: 8.0.17 MySQL Community Server - GPL

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;                                                //모든 DB 확인
..... 

mysql> create database DB이름;                                     //DB 새로 만들기
Query OK, 1 row affected (0.10 sec)

 

4. settings.py 수정하기

django 프로젝트의 settings.py의 DATABASES 변수 내용을 다음과 같이 수정한다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB이름',                       #위에서 생성한 DB이름 사용
        'USER': 'root',                         #root 유저(기본값) 사용
        'PASSWORD': '비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',                         #mysql 설치 시에 설정한 포트번호
    }
}
  • 이후 터미널에서 python manage.py makemigrations와 python manage.py migrate 등의 명령어를 통해 프로젝트 내 장고앱들의 models.py에 따른 데이터 테이블을 생성한다.
  •  만약 migrate 시 unable to create the django_migrations table ((1064 you have an error in your sql syntax)) 등의 오류가 발생하면서 오류가 발생한다면, 이는 django의 버전은 2.0 이상이지만 MySQL 서버 버전이 5.6 이하여서 발생한 것
    • cmd 창에 mysql -V를 통해 MySQL 버전을 확인해보고, 버전이 5.6 이하라면 새롭게 설치를 해야한다. (만약 cmd 창에서의 버전은 5.6이하이지만, MySQL workbench, connector 등 깔려있는 sw의 버전은 5.6 이상이라면, 윈도우의 환경변수 설정을 다시 확인해볼것!!)

 

5. 연동 여부 확인

터미널에서 mysql 명령어를 통해 django 프로젝트와 DB가 연동되었는지를 확인할 수 있다.

>mysql -u 유저이름 -p
password: ****                                                               // 패스워드 입력
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is **\
Server version: 8.0.17 MySQL Community Server - GPL

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;                                                //모든 DB 확인
..... 
mysql> use 프로젝트명;                                                 //모든 DB 중 프로젝트 DB 선택
Database changed 
mysql> show tables;                                                    //프로젝트 DB 내의 table 확인
..... 

Comments