Python

【TIPS】DjangoのSQLite3をMySQLに変更して連携する方法[Windows版]

 

エンジニアライフスタイルブログを運営しているミウラ(@miumiu06171)です。

 

普段はフリーランスでシステムエンジニアをしております。

 

今回は、Python初心者向けにDjango開発でデータベースをSQLite3(デフォルト)からMySQLに変更して連携する方法をまとめてみました。

 

なお、本記事内のPythonソースコードは、Visual Studio Code (VSCode)で動作を確認しているので、同様に動作確認したい方はこちらの記事を参照してください。

 

 

MySQLの環境構築(MAMP)

 

MySQLを扱うためにこちらの記事に従って、MySQL(MAMP)の環境構築を行ってください。

 

MySQLの環境構築ができたら、MAMPを起動し、下図の赤枠のように緑色でApache ServerとMySQL Serverの二つが正常起動していることを確認してください。

 

 

 

仮想環境の準備

 

Django+MySQLで開発するためのPython仮想環境を準備していきます。

 

仮想環境(venv)の作成

 

venvで仮想環境を作成するためには、以下のコマンドを実行します。

 

 

最後に指定した「venv」という名前の仮想環境を作成しています。

 

仮想環境の名前は任意で大丈夫ですが、ここでは「venv」という名前を前提に解説します。

 

 

仮想環境(venv)の有効化

 

先ほど作成した仮想環境「venv」を有効にするには、以下のコマンドを実行します。

 

 

下図のようにターミナルの行頭が「(venv)」で始まっていれば、仮想環境を有効化できています。

 

 

 

Djangoインストール

 

仮想環境「venv」にDjangoをインストールするには、以下のpipコマンドを実行します。

 

 

 

mysqlclientインストール

 

PythonでMySQLを扱うためにmysqlclientをインストールする必要があります。

 

仮想環境「venv」にmysqlclientをインストールするには、以下のpipコマンドを実行します。

 

 

最後に「pip freeze」コマンドでDjangoとmysqlclientがインストールされているか確認しておきましょう。

 

 

 

Djangoの準備

 

仮想環境が準備できたところで、次はDjangoプロジェクト作成から順に準備をしていきます。

 

Djangoプロジェクトの作成(startproject)

 

Djangoプロジェクトを作成するには、以下のstartprojectコマンドを実行します。

 

 

コマンドを実行すると、下図のように「Djangoプロジェクト名」のフォルダが作成されて、いくつかファイルが生成されます。

 

 

 

Djangoアプリの作成(startapp)

 

Djangoアプリを作成するためには、以下のstartappコマンドを実行します。

 

 

コマンドを実行すると、下図のように「Djangoアプリ名」のフォルダが作成されて、いくつかファイルが生成されます。

 

 

 

settings.pyのDATABASES変数を編集

 

Djangoプロジェクト内のsettings.pyのDATABASES変数を以下のように編集し、DjangoにMySQLデータベースの設定を行います。

 

 

ここでは、MySQLのデータベース名を「mysql_testdb」という名前に設定し、USERとPASSWORDはデフォルトのままにしています。

 

データベース名は任意の名前で構いません。

 

また、USER、PASSWORDも必要に応じて変更してください。

 

 

MySQLデータベースの作成

 

先程settings.pyのDATABASES変数のNAMEに設定した「mysql_testdb」という名前のデータベースを作成します。

 

MySQLのデータベースを作成するためには、下記コードのように「mysql -u root -p」コマンドを実行し、パスワードを入力してMySQLにログインします。

 

 

正常にログインができたら、「create database mysql_testdb;」コマンドを実行し、データベースを作成します。

 

そして、正しくデータベースが作成されたか「show databases;」コマンドで確認してください。

 

データベース一覧に「mysql_testdb」が表示されていたら、正しく作成されているので、「quit」コマンドでMySQLからログアウトしておきましょう。

 

 

Djangoでデータベースマイグレーション

 

Djangoの準備とMySQLデータベースの準備ができたら、いよいよDjangoでデータベースマイグレーションを行います。

 

makemigrationsコマンド

 

Djangoでマイグレーションを行うためには、まず下記の「makemigrations」コマンドを実行します。

 

 

Djangoアプリ内のmodels.pyに独自モデルを作成していないため、このコマンドでは「No changes detected」とメッセージ表示されるだけになります。

 

 

migrateコマンド

 

Djangoでマイグレーションを行うためには、もう一つ下記の「migrate」コマンドを実行します。

 

 

コマンドを実行すると、Djangoがデフォルトで提供してくれているauth認証やadminダッシュボード用のデータベーステーブルが生成されます。

 

 

 

MySQLWorkbenchでマイグレーション結果確認

 

MySQL Workbenchを起動し、先程のmigrateコマンドで「mysql_testdb」データベースにテーブルが作成されているか確認しましょう。

 

MySQL Workbenchを起動し、下図の赤枠で示すボタンを押し、MySQL Workbenchへのコネクションを作成しましょう。

 

 

下記のダイアログが表示されるので、コネクション名を入力し、それ以外はデフォルトのまま「OK」を押しましょう。

 

コネクション名はここでは「test」としています。

 

 

ここでパスワードを聞かれますが、デフォルトの「root」を入力すると接続ができます。

 

その後、ウィンドウに作成したコネクションが表示されるので、ダブルクリックすると、MySQL Workbenchが起動します。

 

 

MySQL WorkbenchのSchemasウィンドウに「mysql_testdb」が表示されていることを確認し、下図のようにmigrateコマンドで作成されたauth認証やadminダッシュボード用のテーブルがTable欄に作成されていれば連携は正しく行われています。

 

 

これ以降にDjangoアプリ内のmodels.pyに独自モデルを作成した後、データベースマイグレーションすると、「mysql_testdb」データベースの中にテーブルが追加されていきます。

 

独自モデルを作成してmigrateコマンドを実行すると、デフォルトであれば「<Djangoアプリ名>_<Djangoモデル名>」という名前のテーブルが追加されます。

 

 

まとめ

 

いかがでしたでしょうか。

 

DjangoのデータベースをSQLite3からMySQLに変更して連携する方法を解説してきました。

 

デフォルトのデータベースであるSQLite3も使えますが、MySQLの方がより現場で使われているため、この機会にDjango初心者の方はおさえておくとよいでしょう。

 

【関連記事】

【Python Django入門】使い方からWebアプリ作成までの流れ

【Python Flask入門】使い方の基礎からWebアプリケーション作成までの流れ

【Python Flask入門】データベースと連携したWebアプリケーション作成