일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- boj2239
- react
- springboot
- mysql
- DynamicProgramming
- boj_15685
- BFS
- TDD
- BOJ
- boj2252
- boj_15684
- boj7579
- DP
- boj15683
- onTouchListner
- onTouch
- backtracking
- euclideanalgorithm
- 동적계획법
- boj10775
- testdb
- bruteforce
- boj10942
- django
- boj15654
- boj15998
- nestedjson
- boj15954
- Spring
- DFS
- Today
- Total
이마닷의 블로그
[django] MySQL과 연동하기 본문
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)이다.
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 - GPLType '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 이상이라면, 윈도우의 환경변수 설정을 다시 확인해볼것!!)
- cmd 창에
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 - GPLType '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 확인
.....
'python' 카테고리의 다른 글
[django] 템플릿에서 context object의 메소드 사용하기 (0) | 2020.01.15 |
---|---|
[django] 가장 기본적인 CBV(generic view) (0) | 2019.09.22 |