MariaDB | 作成したwebアプリのデータベースをSQLiteからMariaDBに変更する方法
Pythonには,DjangoというWebアプリケーションフレームワークがある.フレームワークのため,Djangoを利用するとWebアプリを通常よりも短時間で開発することが可能になる.
Reactとは,コンポーネンツをベースとしたユーザーインターフェイスを構築するためのフリーのフロントエンドJavaScriptライブラリーであり,Meta社によって開発された.
Reactは,Next.jsのようなフレームワークを利用してシングルページやモバイルもしくはサーバーレンダーアプリケーションの開発に利用することができる.
MariaDBは,MySQLの作者であるミカエル・ウィデニウスにより開発されたリレーショナルデータベースマネジメントシステム(RDBMS; Relational DataBase Management System)であり,オープンソースというだけではなく信頼性やパフォーマンスに優れている.
以下記事では「Todo webアプリの作成方法」を記した.
shelokuma tech blog | Todo webアプリの作成方法
こちらのwebアプリのデータベースには"SQLite"が利用されている.本記事では,データベースを"SQLite"から"MariaDB"に変更するやり方を以下に記す.
なお,SQLiteに保管したデータをMariaDBに移行するには非常に手間がかかるため,トライしておらず,当該内容は記事に含まれていない.
実施環境
Windows 11
Python 3.11.1
Django 5.1.1
Visual Studio Code (VS Code) 1.93.1
MariaDB 10.10.3
shelokuma tech blog | バージョン確認方法
Todo webアプリ向けMariaDBのデータベースの作成
MariaDBのダウンロードやインストール,設定等をしていない場合は,以下記事を参照する.
shelokuma tech blog | MariaDBの設定および基本的な利用方法
MySQL Clientを開く.
以下画面が開くので,設定したパスワードを入力する.
以下のように,"show databases;"と入力すると,データベースの一覧が出力される.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.020 sec)
以下コマンドを実行し,データベースを作成する.私の場合,"tododb"という名前のデータベースにした.
MariaDB [(none)]> create database tododb;
Query OK, 1 row affected (0.014 sec)
以下コマンドを実行し,tododbに切り替える.
MariaDB [(none)]> \u tododb
Database changed
MariaDB [tododb]>
以下コマンドを実行し,ユーザー名とパスワードを設定する.今回設定したユーザー名とパスワードは以下にした.
- ユーザー名: yyy
- パスワード: zzz
MariaDB [tododb]> create user 'yyy' identified by 'zzz';
Query OK, 0 rows affected (0.017 sec)
以下コマンドを実行し,ユーザー名"yyy"にデータベース"tododb"のアクセス権限を与える.
MariaDB [tododb]> grant all on *.* to yyy;
Query OK, 0 rows affected (0.014 sec)
以下コマンドを実行し,以下のようなメッセージが返されれば問題ない.
MariaDB [tododb]> select * from mysql.user where user = 'yyy' \G
*************************** 1. row ***************************
Host: %
User: yyy
Password: xxxxxxxxxxxxxxxxxxxxxxxx
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
Create_tablespace_priv: Y
Delete_history_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string: xxxxxxxxxxxxxxxxxxxxxxxx
password_expired: N
is_role: N
default_role:
max_statement_time: 0.000000
1 row in set (0.006 sec)
以下コマンドを実行すると,作成したデータベース"tododb"を確認できる.
MariaDB [tododb]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| tododb |
+--------------------+
5 rows in set (0.001 sec)
データベースをSQLiteからMariaDBに変更
Djangoで開発した"backend"ディレクトリに移動し,以下コマンドを実行し,pipenvをactivateする.
$ pipenv shell
その後,以下コマンドを実行し,DjangoからMariaDBに接続するmysqlclientをインストールする.
$ pipenv install mysqlclient
“todoproject/settings.py"の"DATABASES"を以下のように編集する.
~
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql', # 以下追記箇所
'NAME': 'tododb', # 上記で作成したdb名
'USER': 'yyy', # 上記で作成したuser名
'PASSWORD': 'zzz', # 上記で作成したpassword名
'HOST': 'localhost',
}
}
~
その後,以下コマンドを実行する.
$ python manage.py migrate
以下コマンドを実行する.
$ python manage.py runserver
ブラウザにて"http://127.0.0.1:8000/api/todos/"に移動すると,以下画面に遷移すれば成功となる.
以上