티스토리 뷰
django에서는 데이터베이스 엔진을 default로 SQLite3 를 사용한다.
SQLlite는 작고 가볍지만 대규모 프로젝트에는 사용하지 않는다.
따라서 이번에는 Window 환경에서 Mysql 데이터베이스를 django(Python 2.7)와 연동을 해보겠다.
(작년 여름 한번 시도해보았지만 지식 부족+구글링 실력 부족으로 포기한 적이 있었다.)
(사실 그래서 연동 성공의 기쁨으로 새벽에 포스팅중...헿)
django와 mysql을 연동하기위해선 mysql이 설치되어 있어야 한다.
mysql 설치 방법 출처:[빌노트]
mysql이 설치되었다면 데이터베이스부터 만들어 준다.
mysql workbench에서 root 사용자 계정으로 로그인 후 , create database 명령문을 통해 데이터베이스를 만들어 준다.
실행은 ctrl+shfit+entet 단축키나 번개모양을 누르면 실행된다.
새로고침 모양을 누르면 데이터베이스가 생성이 된 것을 확인할 수 있다.
이제 연동 드라이버를 django에 설치해줘야한다.
django에서 제공하는 MySql 연동 드라이버 모듈은 3가지가 있다.
MySQLdb - 제일 안정된 드라이버, python3은 지원하지 않음
Mysqlclient - MySQLdb를 개선한 패키지, Python3.3 이상의 버전도 지원하고있음, 장고에서 추천함
MySQL Connector/Python - MySQL 개발사 오라클에서 제공하는 드라이버
3가지 중 자신에게 맞는 드라이버를 설치하면 되는데, 여기서 나는 Mysqlclient를 사용했다.
Mysqlclient를 설치해준다
pip install Mysqlclient
여기서,
error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27
이러한 오류가 나는 경우가 있다. (python3 환경이면 Visual C++ 10.0으로 나옴)
오류를 살펴보면
http://aka.ms/vcpython27 여기서 Microsoft Visual C++ 9.0 이것을 설치하라고 하는 것인데,
MS VS C++은 용량도 크고 설치 시간도 오래걸리기 때문에 부담이 크다.
(나는 설치했는데도 오류가 났다.mysql.h가 없다나뭐라나..)
그래서 다른 해결 방법은 Mysqlclient 을 미리 컴파일된 pip용 whl 파일을 다운 받아 해결하는 것이다.
이곳에서 자신의 python 버전(cp), 파이썬 비트(win)에 맞는 mysqlclient를 다운로드 받는다.
그 후 다운 받은 whl 파일이 있는 곳에서
(venv) C:\Users\temp\Downloads> pip install {다운 받은 whl 파일 이름}
설치를 해준다.
정상적으로 설치가 되면 settings.py 파일에서 database 설정을 해준다.
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # mysql 엔진 설정
'NAME':'mysite', # 데이터베이스 이름
'USER':'root', # 데이터베이스 연결시 사용할 유저 이름
'PASSWORD':'password', # 유저 패스워드
'HOST':'localhost',
'PORT':''
}
}
그 다음, 데이터베이스에 변경사항을 반영하고
python manage.py migrate
mysql workbench를 확인하면 이렇게 models.py에 정의해둔 테이블과 장고 기본 정의 테이블들이 생긴걸 볼 수 있다.
데이터베이스 엔진을 새로 설정하여 초기화 된 상태이므로 장고 admin 사이트에 로그인 할 수 있는 관리자를 새로 만들어 준다.
python manage.py createsuperuser
확인을 위해 서버를 기동해준다.
python manage.py runserver
정상적으로 작동하면 연동 성공!
어드민에서 데이터를 입력하면 성공적으로 데이터가 저장된 것을 mysql workbench에서 확인할 수 있다.
refer
'Framework > Django' 카테고리의 다른 글
Django get_or_create (0) | 2018.03.11 |
---|---|
Specifying a namespace in include() without providing an app_name is not supported. 오류 해결 (4) | 2018.02.28 |
django forms widget(PasswordInput) (0) | 2018.02.07 |
template url parameter (0) | 2018.01.22 |
View url parameter 가져오기 (0) | 2018.01.22 |
- Total
- Today
- Yesterday
- selenium switch_to_window python
- jsp oracle 연동
- virtualenv
- selenium switch_to_window
- 후위 표현식
- 음수 10진수 음수 2진수
- 중위 표기법 후위 표기법
- sass 설치
- sass
- java String to int
- java toString
- jsp tomcat 연동
- 중위 표현식 후위 표현식
- 후위 표기법
- 2진수 음수
- 전자계산기 구현
- selenium 새 창 크롤링
- selenium 새 탭 크롤링
- jsp tomcat
- sass 사용법
- 후위 표기법 계싼
- jsp 서버 연동
- java int to String
- python virtualenv
- 후위 표기식
- java parseInt
- 후위 표기 계산
- 계산기 구현
- 후위 표기 수식 계싼
- 2의 보수법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |