Djangoには標準でSQLliteというデータベースが搭載されていて、migrateすればすぐに使うことができます。
ですが本格的なアプリ開発の場合、SQLliteではなく「MySQL」や「Oracle Database」といったものを使用するケースが多いと思います。
今回はMySQLをインストールし、Djangoのデータベースとして設定するところまでやってみたいと思います。
環境
Windows10 64bit
Anaconda3
Django2.1
python3.7
①MySQLのダウンロード・インストール
公式サイトからMySQL(Windows用)のインストーラをダウンロードしてきます。
公式サイト
dev.mysql.com
ダウンロードしてきたらインストーラを起動し、画面の表示に従って進めていきます。
基本的にNext・Executeで進めていけばOKですがいくつか注意点があるので記載しておきます。
①「One or more product reqquirements have not been satisfied」が出た場合
僕の場合、上記エラーが出て「Pythonがインストールされてないから公式サイトからダウンロードしてきてね」みたいな警告が出てきました。
でも実際にはAnacondaとPythonは入っているので、無視して「Yes」を押して先に進みました笑
②MySQL Serverの初期設定
インストールが完了すると、そのままサーバーの初期設定画面に進みます。
「Type and Networking」という画面が出てきたらConfig Typeなんかを選べるようになると思いますが、今回は練習用(開発用)のためそのまま(Development~)のまま次に進みます。
ポート番号の設定画面が表示されますが、デフォルトの「3306」がほかのアプリケーションで使用済の場合は変更してください。
次にアカウントの設定画面に進みます。
Accounts and Roles画面が表示されるので、rootアカウントのパスワードを設定します。
パスワードを入れたら画面下部のMySQL User Accountsの「Add User」ボタンから詳細を設定していきます。
ここでは「Username」・「password」を入力してください。
あとはNextボタンで最後まで進んでいけば完了です!
②パスの設定
インストールが完了したら、MySQLServerまでのパスを環境変数に設定します。
ぼくの場合は「"C:\Program Files\MySQL\MySQL Server 8.0\bin"」となりました。
③データベースの作成
DjangoでSQLliteを使用する際には特に意識しなかった作業ですが、MySQLを使う場合にはデータベースを事前にMySQLで作成した後にDjangoで読み込む必要があります。
コマンドプロンプト(もしくはAnaconda Prompt)を開き、以下の様に進めます。
①MySQLサービスの起動(既に起動している場合は飛ばしてOKです)
mysql> net start mysql80
②MySQLへの接続
mysql> mysql -u root -p
パスワードが求められるのでインストール時に設定したパスワードを入力してください
③データベースの作成
mysql> CREATE DATABASE testdb;
今回は"testdb"という名前のデータベースを作成します。
④テーブルの確認
mysql> USE testdb; mysql> SHOW TABLES;
まだテーブルは作成していないので「Empty set」と表示されると思います。
これで無事にデータベースを作成することができました。
次に作成したデータベースをDjangoのプロジェクトに設定していきます。
④MySQLとDjangoの連携
まず最初にDjangoのバージョンの確認です。
今まではDjango2.2を使用してきましたが、Dango2.2でMySQLと接続しようとすると以下のようなエラーが発生します。
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
解決策としてDjangoのバージョンを2.2→2.1に変更する必要があります。
①PyMySQLのインストール
pip install pymysql
②manage.pyの編集
import os import sys import pymysql # 追記 pymysql.install_as_MySQLdb() # 追記 if __name__ == '__main__':
③settings.pyの編集
データベースに関する設定部分を以下の様に変更します
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'データベース名', 'USER': 'ユーザー名', 'PASSWORD': 'パスワード', 'HOST': 'localhost', 'PORT': '3306', } }
「データベース名」・「ユーザー名」・「パスワード」はご自身の設定に合わせて変更してください。
僕の場合は
データベース名:testdb
ユーザー名:root
となります。
これでDjangoとMySQLを連携させることができました。
migrateしてテーブルを確認してみると、Djangoで作成されたテーブルが表示されると思います。
migrate
python manage.py migrate
テーブルの確認
mysql> USE testdb; mysql> SHOW tables;