DjangoのデータベースをPostgreSQLに変更する方法
本記事では、DjangoのデータベースをSQLiteからPostgreSQLに変更する方法について解説します。これを読めば、なぜPostgreSQLが選ばれるのか、その実装手順が明確になります。
はじめに
Djangoは、Pythonで構築された高機能なWebフレームワークで、開発を効率化するためのさまざまなツールを提供しています。そのDjangoでは、デフォルトのデータベースとしてSQLiteが採用されています。しかし、プロジェクトが成長し、データ量や要求が増えるにつれて、より強力でスケーラブルなデータベースが必要になる場合があります。その一つがPostgreSQLです。
本記事では、DjangoのデータベースをSQLiteからPostgreSQLに変更する方法について解説します。これを読めば、なぜPostgreSQLが選ばれるのか、その実装手順が明確になります。
Djangoとは
Djangoは、Pythonで作られたオープンソースのWebフレームワークです。「より早く、より良いWeb開発を可能にする」を理念に掲げ、多くの機能が標準で備わっています。特に以下の特徴が挙げられます。
- 高い生産性: フルスタックフレームワークとして、認証機能、管理画面、ORM(オブジェクト関係マッピング)などが組み込まれており、素早く開発を開始できます。
- 優れた設計原則: DRY(Don’t Repeat Yourself)やMTV(Model-Template-View)アーキテクチャを採用し、効率的かつメンテナブルなコードを書くことが可能です。
- 広範なエコシステム: 多くのパッケージやプラグインが提供されており、さまざまなニーズに対応できます。
Djangoは、初学者からプロフェッショナルまで幅広い開発者に愛され、数々のプロジェクトに採用されています。
Djangoのプロジェクトの始め方
開発環境:vscode
vscodeのターミナルを開き、以下のコマンドを実行してください。
django-admin startproject aaa(任意のアプリ名)
フォルダーとmanage.pyが出来ていたら成功です。
※今回はデータベースを変更するだけなので、アプリは作成しません。
作成したフォルダーに移動します。 DjangoがPostgreSQLデータベースとやり取りをするために、psycopg2
ライブラリが必須であるため、psycopg2-binaryをインストールします。
cd aaa
pip install psycopg2-binary
SQLiteからPostgreSQLに変更するメリット
SQLiteは小規模なプロジェクトには適していますが、プロジェクトが拡大するにつれて、より高度な機能を持つデータベースが必要になります。PostgreSQLを採用するメリットは以下の通りです。
1. スケーラビリティ
PostgreSQLは、高トラフィックや大量のデータを効率的に処理できます。並行クエリや大量のデータ処理に強いため、大規模なWebアプリケーションに最適です。
2. 高度な機能
- トランザクションサポート: 高度なACIDトランザクションを完全サポート。
- カスタムデータ型: JSONBやUUID、ARRAYなどの柔軟なデータ型をネイティブでサポート。
- 強力なクエリ機能: 複雑なSQLクエリや全文検索機能に対応。
3. 信頼性
PostgreSQLはオープンソースでありながら、商用データベースと同等の堅牢性を提供します。データの損失や破損に対する保護機能も充実しています。
4. 拡張性
PostgreSQLは拡張が容易で、サードパーティ製プラグインを利用してさらなる機能強化が可能です。これにより、アプリケーションの成長に合わせて柔軟に対応できます。
データベースの変更方法
こちらの記事を参考にして、データベースを作成してください。
※元々、SQLiteを使用していてPostgreSQLに変更しようとしている方の注意点
PostgreSQLに変更するとモデルからSQLiteのデータベース内に保存されたデータが消えてしまうので注意してください。
データベースを作成したら、settings.pyを以下のように変更します。
#変更前
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
#変更後
DATABASES = {
"defalut":{
"ENGINE":"django.db.backends.postgresql_psycopg2",
"NAME":"db_name",
"USER":"db_username",
"PASSWORD":"db_password",
"HOST":"localhost",
"PORT":"5432"
}
}
NAME、USER、PASSWORDはデータベース作成時に設定したものにしてください。
またPORTが”5432”でない場合は、変更してください。
変更が完了したら、以下のコマンドを実行してください。
python manage.py migrate
エラーが起きなかったら以下のコマンドも実行してください
python manage.py runserver
実行後、以下のページが出てくれば成功です!
おわりに
本記事では、Djangoで使用するデータベースをSQLiteからPostgreSQLに変更する際のメリットや変更方法を中心に説明しました。PostgreSQLを利用することで、大規模なプロジェクトでも安心してデータを管理でき、柔軟性や拡張性が大幅に向上します。