본문 바로가기
개발일지/Django

Django - database mysql로 연동 성공!

by 개발에정착하고싶다 2022. 11. 21.
320x100

django에서 database를 sqlite3가 아니라 mysql로 꼭 연결해서 써보고 싶었다.

그 이유는 솔직히 RDB계열의 모든 프로그램을 사용해봤다.

오라클, sqlserver, postgreSQL, mysql, sqllite3

뭐 그 외에도 더 있었던 것 같긴한데 본의아니게 이렇게 다루게 되었다.

 

우선 오라클을 생각해보면 모든 RDB중에서 가장 압도적으로 빨랐다.

다만 단점은 설치가 윈도우에서만 돌아가거나 우분투, 아니면 어쨌든 가상환경을 써야하므로 맘에 안들었다.

그리고 설치가 가능한 윈도우에서도 한번삐끗하면 포멧하고 재설치하는데 하루가 날라갔고, 정상적으로 설치된다 하더라도 7시간은 족히 걸렸던 것으로 기억된다.

환경설정 변화에 너무 취약하다고 생각해서 별로였고

 

sqlserver는 써본지 시간이 좀 지나서 까먹었지만 무슨 안정성 이슈가 있었던 것 같다.

 

사실상 표면상 기능은 postgreSQL이 최고봉이고 게다가 지원되는 분석툴 등도 너무너무 좋다.

하지만 정규표현식을 쓰지 않았을때 기다려야하는 그 오랜기다림은... 아직도 잊을수가 없어서

진짜 써야한다면 쓰겠지만 본능적으론 꺼려진다고나 할까...

이를테면 SELECT를 쓸때도 대문자가 아니라 소문자로 select라고 쓰면 1줄짜리 쿼리도 점점점 느려지더니 한 쿼리당 10분이 걸리기도 했다;

 

mysql은 mac 로컬에도 설치가 용이하고, 관리도 용이하고 약간 기능에 연동성은 뭐가 없었던게 있었지만 암튼 간편하게 이용할 수 있어서 좋아서 이걸로 꼭 연동하고 싶었다.

 

그렇게 django settings.py에서 연동 해보려고 몇일을 지냈는지 모른다

사실 하나 하나 뚫고 뚫자면 별거 아니고 금방 셋팅 변경이 가능했을지도 모른다.

하지만 하나하나가 막힐때마다 뭔가 나태해져가지고 딴짓하느라 시간낭비를 심하게 했어서 이런 태도를 고쳐야하겠다.

 

pymysql.install_as_MySQLdb()

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '데이터베이스 이름',
        'USER': '일종의 계정명',
        'PASSWORD': '비번',
        'HOST': '사용자',
        'PORT': '3306',
    }
}

메인 프로젝트 단위의 settings.py를 이렇게 바꿔주고

발생되는 에러들을 구글링하며 해결하면 해결된다.

사실상 설치관련된 부분 뿐이다.

 

데이터베이스 이름의 경우에 RDBMS를 배운 사람들은 아는 CREATE DATABASE <데이터베이스이름>

으로 작용하는 그 데이터베이스 이름을 써주면 되고, 이 데이터베이스를 RDBMS상에서 쿼리문을 입력할때 'USE <데이터베이스이름>'

으로 써준다.

물론 설명에서의 꺾쇠는 무시하는게 좀 통상언어인듯하다.

 

user는 RDBMS에 접속하기 위해 사용되는 사용자계정명이며

password는 짝궁으로써 비밀번호다

 

나머지로는 host와 port가 있는데 mysql workbench의 정보를 보고 때려맞췄다;

변수가 생길 가능성은 무궁무진하니 이 부분은 막히면 꼭

rdbms host 이름 찾기

how can i find rdbms host name?

등의 키워드로 찾아보자.

300x250