[Django] MYSQL 연동하기

이열음·2022년 1월 31일
0
post-custom-banner

🌟 Django에 MYSQL 연동하기

🎯 sqlite3 vs Postgres vs MYSQL

1.sqlite3
간단한 테스트용 디비용도로 사용하기 좋은 데이터베이스 입니다.

장점 : 단순하고 간편합니다.
단점 : 단일쓰기 작업만 지원하므로 동시에 여러 클라이언트가 
데이터베이스에 접근해야할때 제한적이고 구조가 단순한 만큼 기능을 확장하기 어렵습니다. 

2. Postgres
기본적으로 성능이 좋은 데이터베이스입니다.

장점 : 안정되어있고 데이터의 무결성을 보장합니다. 
확장성이 좋아 복잡한 기능구현이 가능합니다.
단점 : 읽기기능이 많은 서비스일 경우 오히려 성능이 떨어질 수 있습니다.

3. MYSQL
가장 보편적이고 무난한 데이터베이스입니다.

장점 : 간단하고 보편적입니다. 이용자가 많은만큼 지원이 많고 확장성이 좋습니다. 
단점 : 새로 개발된 기능의 경우 안정성이 부족합니다.

🎯 MYSQL 세팅하기

1. Homebrew 설치하기
MacOS 전용 패키지 관리자인 Homebrew를 설치합니다.
https://brew.sh/index_ko로 이동하여 나와있는 코드를 복사한 뒤
터미널을 켜서 붙여넣어줍니다.

2. mysql 패키지 설치하기
Homebrew 설치가 완료되면 다음의 명령어들을 입력해줍니다.

# mysql
brew install mysql 
# mysql-client = 커맨드라인에서 mysql 서버 접속
brew install mysql-client 
# mysql workbench
brew install mysqlworkbench 설치

세개가 다 설치된다면 터미널에 mysql -uroot를 입력해서
mysql에 잘 접속되는지 확인해줍니다.

3. mysql 설정하기
mysql_secure_installation을 입력하여 비밀번호를 설정해줍니다.
이때 설정하는 비밀번호는 root의 비밀번호가 됩니다.
옵션들을 상황에 맞춰서 y와 n로 설정해 준 뒤에,
mysql -uroot -p방금 설정한 비밀번호를 터미널에 입력하면
잘 접속이 되는걸 확인할 수 있습니다.

4. mysql 내에 DB 생성하기
mysql 세팅이 다 끝났으면 mysql로 DB를 생성해줍니다.
생성명령어는 다음과 같으며, 테이블 이름 뒤에 있는 인자는
모든 문자형태를 MYSQL에 저장할 수 있게하는 명령어입니다.

create database 테이블이름 character set utf8mb4 collate utf8mb4_general_ci;

🎯 Django 에 적용하기

1. mysqlclient를 설치
장고에서 사용할 mysqlclient를 설치해줍니다.

pip install mysqlclient

2. Settings.py 수정하기
그 다음 settings.py의 DATABASES를 찾아가보면
장고의 기본 내장 데이터베이스인 sqlite3으로 설정되어있는걸 확인하실 수 있습니다.
이 설정을 방금 구성한 MYSQL로 바꿔주면 django에서 쓰는 DB가 바뀌게 됩니다.
설정양식은 다음과 같습니다.

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME' : '테이블이름',
            'USER' : 'DB사용자이름',
            'PASSWORD' : '비밀번호',
            'HOST' : 'localhost',
            'PORT' : '3306',
        }
    }

3. DB정보 숨기기
이때 데이터베이스의 비밀번호와 같은 정보들은 유출되면 문제가 생기므로 숨겨주어야 합니다. 이를 위해 프로젝트 내에 secret.json을 만들어주고
위의 내용을 옮긴 뒤 secret.json은 .gitignore에 추가하여
레포지토리에 올라가지 않도록 설정합니다.
그 다음 secret.json 내의 DB설정내용을 가져오기 위해서
settings.py 에 다음 코드를 삽입해줍니다.

import secret
DATABASES = secret[DATABASES]

🎯 DB에 테이블 생성하기

모든 설정을 마쳤으니 마지막으로 마이그레이션 해서 DB내에 테이블을 생성합니다.

python3 manage.py makemigrations 앱이름
python3 manage.py migrate 앱이름
python3 manage.py migrate 

참고 :
https://velog.io/@devmin/Django-MySQL-Connect
https://myjamong.tistory.com/102

post-custom-banner

0개의 댓글