MySQL 4. Django와 MySQL 연결

jiffydev·2020년 10월 6일
0

1. ubuntu mysql 로그인

로그인 시 매번 sudo를 하는 것도 귀찮으므로 아래와 같이 설정

mysql > use mysql;
mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
mysql > FLUSH PRIVILEGES;

사실 패스워드를 ''(빈칸)으로 설정하는 것이라 실행하면 패스워드 입력하는 항목이 뜬다. 거기서 그냥 엔터 다시 눌러주면 되는 것

2. mysql 설치

mysqlserver는 이미 설치한 것으로 가정한다.
장고 가상환경에서 바로 mysqlclient을 설치하려고 하면

# 우분투에서 mysqlclient 설치시 오류가 발생한다.
# 아래와 정확히 같지는 않더라도 egg_info어쩌고 하는 오류가 발생.
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-zbw18e9_/mysqlclient/

# 또는 (맥?)

/bin/sh: 1: mysql_config: not found

# 이때
sudo apt-get install libmysqlclient-dev 
# 다시 
pip install mysqlclient

3. mysql 데이터베이스 생성

mysql> create database django_insta character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.01 sec)

4. 장고와 연동

프로젝트 폴더 가장 위의 settings.py를 보면

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

데이터베이스 관련 항목이 있다. 이를 수정해야 하는데, 우선 settings.py에서는 나와서 manage.py파일이 위치한 곳에 my_settings.py 파일을 생성한다. 파일명은 편한대로 하자.
이 안에

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',    [1]
        'NAME': 'django_insta',                  [2]
        'USER': 'root',                          [3]
        'PASSWORD': 'password',                  [4]
        'HOST': 'localhost',                     [5]
        'PORT': '3306',                          [6]
    }
}

이 항목을 붙여넣기 하는데 나머지는 그대로 둬도 되지만 [2]는 mysql의 데이터베이스 이름, [3]은 mysql의 계정 ID, [4]는 mysql의 비밀번호는 자신이 설정한 것으로 바꾼다.

방금 확인했던 settings.py에서 파일 위쪽에 import가 있는 곳에 import my_settings를 삽입하고, DATABASE항목의 중괄호와 그 안의 내용을 다 지우고 DATABASES=my_settings.DATABASES와 같이 바꾼다.
python manage.py migrate을 실행해 변경사항을 적용해준 후 다시 mysql에 들어가 테이블을 확인하면 테이블이 적용되어 있을 것이다.

연동하기 전에 데이터를 작성하면 그건 mysql에 반영이 안되는 듯하다. 가져올 수 있을지도 모르지만 아직 방법을 모르겠다.

profile
잘 & 열심히 살고싶은 개발자

0개의 댓글