티스토리 뷰

이번에는 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 된 것을 확인할 수 있습니다.

 


 

참고 자료

 

예제로 배우는 파이썬 프로그래밍 - Python DB API

Python DB API Python에서 데이타베이스를 엑서스하기 위한 한 방법으로 Python DB API를 사용할 수 있다. Python DB API는 여러 데이타베이스를 엑세스하는 표준 API 로서 여러 DB 엑세스 모듈에서 이 최소한의 API 인터페이스 표준을 따르고 있다. 표준 API는 크게 데이타베이스를 연결하고, SQL 문을 실행하고, 연결을 닫는 등의 기본적인 DB 작업과 관련된 기능들을 정의하고 있다. Python DB API는 현재 버전

pythonstudy.xyz

 

Window 환경 Django+Mysql 연동하기! (Mysqlclient)

django에서는 데이터베이스 엔진을 default로 SQLite3 를 사용한다. SQLlite는 작고 가볍지만 대규모 프로젝트에는 사용하지 않는다. 따라서 이번에는 Window 환경에서 Mysql 데이터베이스를 django(Python 2.7)와..

jamanbbo.tistory.com

 

댓글