티스토리 뷰
이번에는 Django와 MySQL을 연동해보려고 합니다. Django는 default 데이터베이스로 SQLite3를
사용합니다. SQLite3는 용량이 작고 가볍지만 대규모 프로젝트에서는 잘 쓰이지 않습니다.
또한 MySQL이 기본적으로 제공하는 Workbench라는 툴을 이용하면 데이터베이스를 더 쉽게 사용하
고 관리할 수 있어 굉장히 편리합니다.
MySQL과 Workbench는 이미 설치되어 있다고 가정하겠습니다.
1. mysqlclient 설치
Python에서 MySQL을 사용하기 위해 우선 Python DB API 표준을 따르는 MySQL DB 모듈을 설치해야 합니다.
MySQL을 지원하는 Python 모듈은 여러 가지가 있는데, 여기서는 mysqlclient
라는 모듈을 사용하기로 합니다.
먼저 File - settings - Project Interpreter로 들어가 후, 우측 상단의 +
버튼을 눌러 패키지 설치 창으로들어갑니다.
검색창에 mysqlclient
를 검색하여 설치해줍니다.
2. settings.py 변경
현재 settings.py의 데이터베이스 부분에는 다음과 같이 default 데이터베이스인 SQLite3로 지정되어 있습니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
이 부분에 우리가 사용할 MySQL에 대한 정보를 입력해주어야 합니다. 입력할 항목은 다음과 같습니다.
# MySQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bookstore',
'USER': 'root',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
'ENGINE': 'django.db.backends.mysql'
: MySQL 엔진 설정'NAME'
: 연결할 데이터베이스(스키마) 이름'USER'
: 사용할 데이터베이스 계정- root는 MySQL의 최상위 계정으로 MySQL을 설치할 때 함께 만들었다.
'PASSWORD'
: 사용할 계정에 대한 패스워드'HOST'
: 데이터베이스 주소(IP)- 우리는 PC에 설치된 MySQL을 사용하는 것이므로 localhost로 지정
'PORT'
: 데이터베이스 포트 번호- MySQL은 3306이 default
3. MySQL 스키마 생성
MySQL에서는 데이터베이스를 스키마라고도 합니다. 아까 settings.py에서 연결할 데이터베이스의 이름을
bookstore라고 지정했지만 아직 MySQL에는 bookstore라는 데이터베이스가 존재하지 않습니다.
따라서 이를 만들어줘야 합니다.
먼저 workbench에서 local instance를 선택하여 들어갑니다.
로그인하면 다음과 같은 화면이 나옵니다. SQL 쿼리문을 입력하여 직접 스키마를 생성할 수도 있지만
그냥 스키마 리스트가 나열된 곳에 우클릭을 하면 스키마를 쉽게 생성할 수 있습니다.
스키마 이름은 settings.py에서 지정한 이름으로, 나머지 항목은 다음과 같이 지정한 후 아래에 있는
apply
버튼을 눌러 스키마를 생성합니다.
4. 데이터베이스 변경사항 반영
현재 bookstore 데이터베이스는 초기화 상태입니다. 지금까지 우리가 작업한 내용을 반영하기 위해
python manage.py migrate
명령으로 데이터베이스에 변경사항을 반영합니다.
migrate가 성공하고 workbench에서 bookstore 데이터베이스를 확인해보면 다음과 같이
Django가 기본적으로 만들어주는 테이블 외에도 우리가 models.py에 정의한 book 테이블까지 생성된 것을 확인할 수 있습니다.
5. Admin 계정 생성 및 데이터 입력
migrate를 다시 한 것과 마찬가지로 settings.py에서 데이터베이스 부분을 새로 설정하여 초기화된
상태이기 때문에 Admin 계정 또한 다시 생성해야 합니다.
python manage.py createsuperuser
생성한 Admin 계정으로 로그인하여 Admin 페이지를 들어가보면
Book 테이블에 아무런 데이터가 없는 것을 확인할 수 있습니다.
이전에 했던 것처럼 Book 테이블에 데이터를 추가하면 아래 Admin 페이지에서 보이는 것처럼
workbench의 book 테이블에도 데이터가 INSERT 된 것을 확인할 수 있습니다.
참고 자료
'Django' 카테고리의 다른 글
[issue #001] mysqlclient가 설치되지 않을 때 (0) | 2020.01.09 |
---|---|
[Django App 2-3] Django에서 MySQL 활용하기 (2) | 2020.01.09 |
[Django App 2-1] 북스토어 애플리케이션 개발 (0) | 2020.01.07 |
[Django App 1-3] 북마크 애플리케이션 개발(2) (0) | 2020.01.01 |
[Django App 1-2] 북마크 애플리케이션 개발(1) (0) | 2020.01.01 |
- Total
- Today
- Yesterday
- Django 팔로우
- Django
- Django 북마크
- Redis Cache
- Django 로그아웃
- MySQL
- Django application
- Django 회원 정보 수정
- 북마크 어플리케이션
- 장고
- Django 어플리케이션
- Django 좋아요
- Django 프로젝트 생성
- java
- Django Instagram
- 파이썬
- query parameter
- Django 인스타그램
- Django User
- Django 검색
- Django 댓글
- Django 비밀번호 수정
- Django 컬렉션
- python
- Django 회원가입
- Redis
- 서점 어플리케이션
- Django 해시태그
- Django 업로드
- Django 로그인
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |