本記事ではDjangoにデフォルトで設定されているSQLiteをMysqlに変えるときの設定について確認する。
プロジェクト名:ex2
アプリ名:apl2
目次
- 1.本稿の開発環境
- 2 Djangoプロジェクトの作成
- 3 Djangoアプリを作成
- 4 プロジェクトの初期設定
- 5 データベースの設定
- 6 PyMySQL(Python製のMySQLクライアント)のインストール
- 7 manage.pyの編集
- 8 マイグレーション
1.本稿の開発環境
(1)ホストOS
Windows 10 Pro
(2)仮想環境(VirtualBox)
・ゲストOS:CentOs8(Red Hat 64-bit)
・pythonバージョン
Python 3.6.8
・MySQL Serverのバージョン
# mysqld –version
/usr/libexec/mysqld Ver 8.0.26 for Linux on x86_64
(Source distribution)
・MySQL Clientのバージョン
# mysql –version
mysql Ver 8.0.26 for Linux on x86_64
(Source distribution)
・Djangoのインストール
# python3 -m pip install Django
# python3 -m django –version
3.2.7
仮想環境の作成については下記のページを参照
VirtualBoxにCentOS8の環境作成
2 Djangoプロジェクトの作成
# django-admin startproject ex2
3 Djangoアプリを作成
プロジェクトのフォルダで下記コマンドを実行
# python3 manage.py startapp apl2
4 プロジェクトの初期設定
プロジェクトのsettings.pyファイルで次の2つを編集
・INSTALLED_APPS変数
・TEMPLATES変数のDIRS
(1)INSTALLED_APPS変数にアプリケーションを登録
’apl2.apps.Apl1Config’を登録
1 2 3 4 5 6 7 8 |
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'apl2.apps.Apl2Config', |
(2)テンプレートフォルダの指定
HTMLテンプレートファイルを格納するフォルダを作成して登録する。ここではmanage.pyと同じディレクトリtemplatesフォルダを作成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR/'templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] |
5 データベースの設定
プロジェクト名/settings.pyを編集
mysqlを使うため、下記の内容に書き換える
1 2 3 4 5 6 7 8 9 10 11 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'ex2db', 'USER': 'root', 'PASSWORD': ' ', 'HOST': '', 'PORT': '', } } |
6 PyMySQL(Python製のMySQLクライアント)のインストール
・pymysql
# pip3 install pymysql
・インストール済みのパッケージ一覧の確認
# pip3 freeze -l
7 manage.pyの編集
下記の2行を追加
・import pymysql
・pymysql.install_as_MySQLdb()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/usr/bin/env python """Django's command-line utility for administrative tasks.""" import os import sys import pymysql #add pymysql.install_as_MySQLdb() #add def main(): """Run administrative tasks.""" os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ex2.settings') try: from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) from exc execute_from_command_line(sys.argv) if __name__ == '__main__': main() |
(注)pymysqlについて
「本番環境」でもMySQLが使えるようにするためにはwsgi.pyの編集が必要。
wsgi.pyに下記を追加
8 マイグレーション
データベースは予め作成しておく
mysql> CREATE DATABASE ex2db;
また、Mysqlサーバを起動しておく
# service mysqld start
(1)マイグレーションを実行
# python3 manage.py migrate
migrateコマンドではINSTALLED_APPSの設定を参照して、ex2/settings.pyファイルのデータベース設定に従って必要なすべてのデータベースのテーブルを作成する
(2)マイグレーションにより作成されたテーブルの確認
# mysql -u root -p
Enter password:
mysql> SHOW databases;
mysql> USE ex2db;
mysql> SHOW tables;
The end