Django에 mysql연동하기

mysql 설치

Database는 linux에 mysql server를 설치하여 관리할 것이다.

$ sudo apt-get install mysql-server
$ sudo mysql_secure_installtion
$ service mysql start

mysql을 설치하고 server를 가동하고 mysql의 command line client를 실행했다 mysqladmin을 이용하여 root암호를 설정해준다.

$ sudo mysqladmin -u root -p password

이제 데이터베이스, 유저를 만든다

$ sudo mysql
mysql> create database meeting;
mysql> create user 'woosung'@'%' identified by '{password}';
mysql> grant all privileges on meeting.* to woosung;
mysql> flush privileges;
mysql> quit;
$ sudo mysql -u woosung -p meeting

django에 mysql 연동하기


우선 mysqlclient package를 설치한다.

$ sudo apt-get install libmysqlclient-dev
$ workon py1
(py1) $ pip install mysqlclient

server로그인 정보는 보안을 위해 따로 file로 관리한다. 이번 포스트에서는 conf파일을 만들어서 관리하는 방법을 알아본다.

$ vim $PROJECT_HOME/mysql.cnf

mysql.cnf파일에 아래의 format으로 입력한다.

# mysql.cnf
[client]
database = meeting
host = localhost
user = woosung
password = {password}

setting.py의 Databases 변수에 mysql server정보를 입력한다.

DATABASES = {
  'default' : {
    'ENGINE': 'django.db.backends.mysql',
    'OPTIONS': {
      'read_default_file': os.path.join(BASE_DIR, 'mysql.conf'),
# database에 strict mode설정
      'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
     }
   }
}

제대로 연동됐는지 확인해본다

$ cd $PROJECT_HOME
$ python manage.py runserver

이제 admin 페이지로 접속해본다. 접속하기전에 django와 관련된 기본 table들을 생성하고 super user를 만든다.

$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py createsuperuser

이제 localhost:8000/admin으로 접속해서 super user로 로그인해본다. Groups와 Users 테이블이 보인다. mysql에 접속해서 table을 확인해보면 10개정도의 table이 django에 의해 생긴것을 확인할 수 있다.