Djangoは、Pythonで構築された無料のオープンソースのWebフレームワークです。2005年に初めて公開されたDjangoは、「迅速な開発とクリーンで実用的な設計」というモットーを取り入れています。Webサーバー上にデプロイされるこのフレームワークは、豊富な機能、セキュリティ、スケーラビリティを備えたWebフロントエンドを迅速に構築できます。
あらゆるWebアプリは、そのコンテンツをデータベースに依存しています。モダンなフレームワークであるDjangoは、多くの標準的なデータベースプログラムをサポートしています。例えば、PostgreSQL, SQLite, MySQLなどです。このガイドでは、DjangoアプリをMySQL上のデータベースに接続する方法を紹介します.
前提条件
このチュートリアルに従うには、Djangoとデータベース接続に進む前に、特定の前提条件を満たす必要があります:
- 適切なWebサーバー。このガイドでは、以下を使用します:Ubuntuサーバー.
- 適切に設定されたPython 3開発環境.
- データベースアプリケーション。以下に関する詳細なガイドです:MySQLのインストールと使用.
Python 3のインストールと設定
DjangoはPythonで書かれています。Pythonアプリケーションを実行するには、システムにPythonバイナリがインストールされている必要があります。UbuntuにはデフォルトでPythonがインストールされています。ここではPython 3を使用します。ターミナルから次のコマンドを実行します。まず、APT キャッシュを更新し、インストールされているすべてのパッケージをアップグレード(利用可能な場合)します:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3は公式のUbuntuパッケージサーバーから直接利用できます。パッケージ
python-is-python3 は、使いやすさのためにpython から
python3 へのバイナリソフトリンクを作成します:
|
1 |
$ sudo apt install python3 python-is-python3 |
次に、インストールが成功したか確認します:
|
1 2 |
$ python3 --version $ python --version |
その後、pipが必要です。これは標準のPythonパッケージマネージャーであり、標準ライブラリに含まれていない追加のPythonライブラリの管理を担当します。なお、インストールするのは pip3(Python 3用)です:
|
1 |
$ sudo apt install python3-pip |
最後に、堅牢なプログラミング環境のために、いくつかの追加パッケージが必要です:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
MySQLのインストールと設定
このセクションでは、MySQLのインストールと設定について簡単に説明します。デフォルトのUbuntuパッケージリポジトリから入手できます:
|
1 |
$ sudo apt install mysql-server |
インストールが正常に完了すると、MySQLがバックグラウンドで起動します。正常に動作しているか確認します:
|
1 |
$ systemctl status mysql |
MySQLサーバーが起動し、稼働しています。これで、Djangoアプリの開発に安全に移行できます。
Djangoでの作業
-
サンプルDjangoアプリの構築
Webアプリの土台には、Djangoプロジェクトのスケルトンが必要です。これには、堅牢なWebアプリを作成するために必要なすべてのツールとライブラリが含まれています。まず、Djangoアプリ専用のディレクトリを作成します。ディレクトリには、これから構築するアプリに関連する、意味のある名前を付けることをお勧めします。このデモンストレーションでは、これに次の名前を付けます:myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
Pythonのvenv ディレクトリ内に仮想環境を作成するためのモジュール。次のコマンドを使用してモジュールをインストールします:APT:
|
1 |
$ sudo apt install python3-venv |
次に、ディレクトリに移動して仮想環境を作成します。わかりやすくするために、環境名を demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
次に、仮想環境をアクティベートするために、activate スクリプトを実行します:
|
1 |
$ . demoapp_env/bin/activate |
次に、この専用の仮想環境内に Django をインストールします。Pip は、いくつかの追加コンポーネントをダウンロードしてインストールします:
|
1 |
$ pip インストール django |
Djangoがインストールされ、使用準備が整いました。次の django-admin コマンドを実行して、新しいDjangoプロジェクトを作成します。その後、アプリに適切な名前を付けます:
|
1 |
$ django-admin startproject demoapp |
これにより、必要なプロジェクトファイルとディレクトリが配置されたデモプロジェクトが作成されます:
|
1 |
$ ls -l |
プロジェクトのスケルトンが完成しました。次に、目的を達成するために適切に設定する必要があります。
-
Djangoプロジェクト設定の編集
プロジェクトのすべての設定は、以下のファイルに保存されています:settings.py. これはDjangoプロジェクトのディレクトリ内にあります。まず、適切なタイムゾーンを設定し、Djangoアプリに接続できるホストをリストすることから始めます。テキストエディタで設定ファイルを開きます:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
スクリプトを下にスクロールして、次のエントリを見つけます TIME_ZONE. デモンストレーションとして、タイムゾーンは以下に設定されています America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
参考までに、次のコマンドを実行すると、Linuxでサポートされているすべてのタイムゾーンが表示されます:
|
1 |
$ timedatectl list-timezones |
次に、次のエントリまでスクロールします。 ALLOWED_HOSTS。これは、どのマシンがアプリにアクセスできるかを制御します。デモ用として、localhostのみが含まれています。
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
その後、ファイルを保存してエディタを閉じます。次のコマンドで変更を適用します:
|
1 |
$ python manage.py migrate |
次に、ウェブアプリの管理者アカウントを作成する必要があります。このアカウントは、Django管理インターフェースにアクセスするために使用されます。次のコマンドを実行してください:
|
1 |
$ python manage.py createsuperuser |
ユーザー名、メールアドレス、パスワードの入力を求められます。これでアプリはデータベースに接続する準備が整いました。
MySQL接続
-
MySQLコネクタと開発ライブラリのインストール
DjangoアプリにMySQLを統合するには、必要なツールを提供する追加のPython 3ライブラリが必要です。データベースコネクタとして、mysqlclient。これは、次のフォークです:MySQLdb.
確実にpython3-devがインストールされていることを確認してください:
|
1 |
$ sudo apt install python3-dev |
また、いくつかの追加のPythonおよびMySQLのヘッダーとライブラリも必要です:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
インストールが完了したら、pipを使用してPythonモジュールmysqlclientをインストールします。無視しても構わないエラーメッセージが表示されることがあります。
|
1 |
$ pip install mysqlclient |
-
専用データベースの設定
次のステップでは、Djangoアプリ用の専用データベースとデータベースユーザーを設定します。MySQLシェルをroot ユーザーとして起動します:
|
1 |
$ sudo mysql -u root |
現在利用可能なすべてのデータベースを確認するには、次のクエリを実行します。
|
1 |
$ SHOW DATABASES; |
Djangoアプリ用の専用データベースを作成しましょう。プロジェクト名と一致する適切な名前を付けてください。
|
1 |
$ CREATE DATABASE demoapp_data; |
次に、作成されたことを確認します。
|
1 |
$ SHOW DATABASES; |
次に、専用のMySQLユーザーを作成します。このユーザーをデータベースの所有者として設定します。Djangoアプリは、このユーザーの資格情報を使用してMySQLデータベースを操作します。
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
ユーザー demoapp_user にすべての権限を付与します。対象データベース: demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
権限の変更を反映するには、MySQLの権限テーブルを再読み込みします:
|
1 |
$ FLUSH PRIVILEGES; |
これで、データベースをDjangoアプリに接続する準備が整いました。
-
データベースをDjangoアプリに接続する
最後に、データストレージにデータベースを使用するようにDjangoアプリを設定します。設定スクリプトを開きます。settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
次のエントリまでスクロールダウンし、DATABASES、以下のコードを入力します。
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
ファイルを保存してエディタを閉じます。次のステップは、先ほどコードで説明した設定ファイルを設定することです。sudo を使用して、指定された場所にあるテキストファイルを開きます:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
この設定ファイルには、Django専用データベースとMySQLサーバーで作成したユーザーに関する情報が含まれます。ファイルの末尾に次の行を追加してください:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
変更を反映させるには、MySQLサーバーを再起動する必要があります:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
MySQL接続のテスト
MySQL接続が正常に機能しているか確認する時が来ました。Djangoサーバーが問題なく動作すれば、接続は正常です。そうでない場合は、何らかの問題があります。まず、Djangoプロジェクトに加えたすべての変更を適用します:
|
1 |
$ python manage.py migrate |
次に、以下のプロジェクトディレクトリに移動し、Djangoサーバーを起動します:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
|
1 |
$ http://<server_ip_address>:8000 |
やりました!Djangoの成功ページに無事アクセスできました。これにより、MySQLの接続が正常に動作していることも確認できます。作業が終了したら、安全に仮想環境を終了できます:
|
1 |
$ deactivate |
最後に
このガイドでは、DjangoとMySQLを組み合わせる基本を学びました。Djangoアプリを作成し、それをMySQLデータベースに接続する方法を紹介しました。その仕組みは、Djangoの設定ファイルである settings.py にあります。また、次のような基本的な設定も変更しました。 ALLOWED_HOSTS や TIME_ZONE などです。Djangoは非常に柔軟です。MySQL以外にも、PostgreSQLなどの他のSQLサーバーや、Nginxなどのサーバーエンジンもサポートしています。
Djangoのインストール、設定、および操作に関するベストプラクティスについてのガイドもご覧ください:
- Ubuntu 20.04へのDjango Webフレームワークのインストール
- Ubuntu 20.04でDjango、PostgreSQL、Nginx、Gunicornをセットアップする
- Djangoモデルの作成:チュートリアル
快適なコンピューティングを!






コメント
コメントはまだありません。最初のコメントを投稿しましょう。