そのほか
2024/12/02
古川 直輝

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を利用することで、大規模なプロジェクトでも安心してデータを管理でき、柔軟性や拡張性が大幅に向上します。

New call-to-action