この記事はそもそもMySQLすらダウンロードしてない人向けです。
Djangoのプロジェクト自体は作成済みを想定しています。
環境
- OS: LinuxMint 18.3
- Django == 2.0.6
各種インストール
$ sudo apt-get install mysql-server
インストール途中にパスワードを設定するように求められるので設定してください。
現時点で(2018/06)デフォルトでインストールされる PyMySQL==0.7.9 は致命的なバグが含まれているためこちらではバージョンを指定してインストール。
バグについてはこちら
$ pip install PyMySQL==0.8.0
文字化け対策です。
$ sudo vim /etc/mysql/my.cnf # MySQLの設定ファイルを変更する
以下を書き加える
[mysqld]
character-set-server=utf8
skip-character-set-client-handshake
default-storage-engine=INNODB
[mysqldump]
default-character-set=utf8
[mysql]
default-character-set=utf8
$ sudo /etc/init.d/mysql restart
ログイン
$ mysql -u root -p
データベースの作成
mysql > create database test_db;
ユーザーの追加
ユーザー名:testuser
パスワード:password
ホスト名:localhost
mysql > create user `testuser`@`localhost` IDENTIFIED BY 'password';
ユーザーにデータベースの操作権限を付与
対象:testuser@localhost
対象のパスワード:password
操作できるDB名:test_db
mysql > grant all privileges on test_db.* to testuser@localhost IDENTIFIED BY 'password';
ログアウト
mysql > \n
これでMySQL側の設定は完了です。
settings.pyを編集する
settings.pyの DATABASE の部分を書き換える
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test_db',
'USER': 'testuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
'TEST': {
'NAME': 'test_sample'
}
}
}
PyMySQLを使えるようにする
manage.pyにこれを書き加えてください。
import pymysql
pymysql.install_as_MySQLdb()
書き加える場所はどこでもいいと思います。私は import の下に書き加えてます。
終わり
これで
$ python manage.py makemigrations
$ python manage.py migrate
とすれば終わり!!
参考リンク
codelab.website
qiita.com
qiita.com