아래 내용은 python 버전에 따라 맞는 버전을 선택해야 한다.
1) MySQL-python용 database library 설치를 한다. (MariaDB에서도 사용 가능)
다운로드 사이트 참조 : http://www.lfd.uci.edu/~gohlke/pythonlibs/
python 3.6용 64bit 버전 mysqlclient-1.3.3.win-amd64-py3.6.whl python 3.6용 32bit 버전
- python은 기본적으로 32bit로 설치된다.
mysqlclient-1.3.3.win32-py3.6.whl <-- 파일명은 버전에 따라 다를 수 있다.
download한 mysqlclient-1.3.3.win64-py3.6.whl을 대상으로 pip install mysqlclient-1.3.3.win64-py3.6.whl 해 준다.
또는 > pip install mysqlclient 해도 된다.
2) settings.py 에서 아래와 같이 적는다.
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test', <--- DB명 : db는 미리 작성되어 있어야 함.
'USER': 'root', <--- 계정명
'PASSWORD': '123', <--- 계정 암호
'HOST': '127.0.0.1', <--- DB가 설치된 컴의 ip
'PORT': '3306', <--- DBMS의 port 번호
}
}
...
또는 settings.py에 있는 DATABASES 를 수정한다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/path/to/my.cnf',
},
}
}
# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8
그리고 옵션에 아래와 같이 추가해야 한다.
SET sql_mode='STRICT_TRANS_TABLES'
3) 설정 파일을 근거로 테이블 생성
command 창에서 작업하도록 한다.
- Djanago 1.6 이하 버전
해당프로젝트> python manage.py syncdb
해당프로젝트> python manage.py createsuperuser 수퍼유저를 만들 수 있다.
- Djanago 1.7 이상 버전
해당프로젝트> python manage.py makemigrations
해당프로젝트> python manage.py migrate
해당프로젝트> python manage.py createsuperuser
sqlmigrate 명령 :
makemigrations로 데이터베이스 작업 파일을 생성하고 migrate 명령을 실행하기 전에 실제 어떤 쿼리문이 실행되는지 sqlmigrate 명령으로 확인해 볼 수 있다. sqlmigrate 명령은 실행되는 쿼리만 조회할 뿐, 실제 쿼리가 수행되는 것은 아니다.
예)
(base) c:\projects\djangoex> python manage.py sqlmigrate djangoex 0001
BEGIN;
-- Create model Question
CREATE TABLE "djangoex_article" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "subject" varchar(200) NOT NULL, "content" text NOT NULL);
sqlite3 를 사용하는 경우----------------------------------------
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
*** 다른 DBMS와 연동하기 ***
https://docs.djangoproject.com/en/4.0/ref/databases/