DjangoアプリにRDBMS(MySQL)を紐づける

Djangoアプリはデフォルトだとsqlite3を使用するよう設定されています。データベースとしてMySQLを使うよう設定してみましょう。

ConohaVPSにデプロイしたDjangoアプリ(ConoHa VPSにDjangoアプリをデプロイする方法)のデータベースとして、Conohaが用意してくれたMySQL(というかMariaDB)を使うよう設定してみましょう。

目次

MySQLにログイン

TeraTermなどでサーバーにSSH接続し、MySQLにログインします。

$ mysql -u root -p

パスワードを聞かれるので、サーバーにログイン時表示されているMySQL root password を入力します。

elcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 33
Server version: 10.7.3-MariaDB-1:10.7.3+maria~focal-log mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

MySQL(というかMariaDB)にログインできました。

データベースの作成

アプリで使用するデータベースを作成します。

MariaDB [(none)]> create database データベース名;
データベースにユーザーを作成し、パスワードを設定します。
MariaDB [(none)]> create user 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
ユーザーにすべての権限を付与します。
MariaDB [(none)]> grant all privileges on データベース名.* to ユーザー名@localhost IDENTIFIED BY 'パスワード';
MySQLからログアウトします。
MariaDB [(none)]> \q

settings.pyを編集

Djangoアプリのsettings.pyを編集し、先ほど作成したデータベースを使用するよう設定します。

DATABASES = {
    # 元のsqlite3データベースはコメントアウト
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': BASE_DIR / 'db.sqlite3',
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'データベース名',
        'USER': 'ユーザー名',
        'PASSWORD': 'パスワード',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS':{
                'init_command':"SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}

OPTIONSで付けているinit_commandはMySQLサーバーに接続するたびに、SQLモードが正しく設定されるようにするオプションです。

マイグレート

最後にマイグレートを行います。

マイグレーションファイルは予め用意してあるので、サーバー側ではマイグレーションファイルをデータベースに適用するコマンドのみを実行します。

TeraTermなどでサーバーにログインし、Djangoプロジェクトのトップディレクトリで次のコマンドを実行します。

[ユーザー名@xxx-xx-xx-xx:/home/django/django-tutorial$] sudo python3 manage.py migrate
Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
.
.
.

こんな感じでマイグレーションファイルが適用され、データベースに反映されます。

データベースを新しくしたので、一覧ページはまっさらになっているはずです。

データベースを新しくしたので一覧ページはまっさらになっている

あとはローカルでやったのと同じようにサーバー側でスーパーユーザーを作りましょう。

スーパーユーザーの作成方法は次の記事をご参照ください。

7.Djangoの管理サイト(Django Admin)を使ってみよう

このエントリーをはてなブックマークに追加

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。