今回は、DjangoのPostgreSQLデータベースシステムについて学びます。
ここでは、以前に Django MySQL で行ったのと同様の操作を行います。
この記事は、MySQL の代わりに PostgreSQL を使うことに興味がある人の役に立ちます。
PostgreSQLとは?
MySQLデータベース管理システムと同様に、PostgreSQLはデータベーステーブルの形でデータにアクセスし、保存し、処理するために使用されるRDBMSの別のタイプです。
PostgreSQLではSQL – Structured Query Languageが使用され、PostgreSQLのデータベースへのアクセス、様々なタスクの実行、および処理に使用されます。
この記事もチェック:DjangoでのMySQLの使い方|インストールや接続、データ取得等を解説
PostgreSQLの基本構造
PostgreSQLのデータベースには、データはテーブルと呼ばれるデータベースオブジェクトとして格納されます。
他のRDBMSと同様に、PostgreSQLのテーブルは、ユーザの入力情報を含むレコードと呼ばれる行と、テーブル内の各レコードに関する特定の情報を持つフィールドと呼ばれる列の集合体です。
例えば
| ID|名前|クラス|学年|など
| — | — | — | — |
| 1|エマ|X|A|。
| 2|ソフィア|IX|A|。
| 3|リヤ|VII|B|||。
| 4|カイリ-|VIII|C||。
| 5|クレア|XI|A|||。
| 6|リリー|XII|D|の順です。
PostgreSQLのテーブルここでは4つのフィールドと6つのレコードがあります。
MySQLとPostgreSQLの違い
MySQLとPostgreSQLはどちらもRDBMSに属しますが、両者の間にはいくつかの重要な違いがあります。
- MySQLとPostgreSQLの主な違いは、PostgreSQLがORDBMS(オブジェクトリ レーショナルデータベース管理システム)であるのに対し、MySQLはコミュニティ主導の RDBMシステムであることです。
- もう一つの重要な特徴は、PostgreSQLがJSON、XMLなどの最新のアプリケーション機能をサポートしているのに対し、MySQLはJSONしかサポートしていないことです。
PostgreSQL をシステムにインストールする
PostgreSQLをインストールするには、こちらのリンクにアクセスします – https://www.postgresql.org/download/
上記のリンクからPostgreSQLをインストールしたら、SQLシェルを開き、プロンプトに従います。
データベース接続のためのパスワードの入力を求められます。
CREATE DATABASE <db_name>; |
現在、あなたはPostgreSQLのDBにいます。
ここで、Django という名前の新しい DB を追加して、すべての Models を SQL シェルに格納するコードを記述します。
c <db_name>; |
使用されている構文は、基本的な SQL 構文です。
現在の Db を django に変更するには、別のコードを使用します。
pip install psycopg2 |
これで、新しい django DB に入りました。
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.postgresql_psycopg2' ,
'NAME' : ‘<db_name>’,
'USER' : '<db_username>' ,
'PASSWORD' : '<password>' ,
'HOST' : '<db_hostname>' ,
'PORT' : '<db_port>' ,
}
} |
psycopg2接続ドライバをシステムにインストールします。
MySQL Client と同様に、psycopg2 も PostgreSQL 用の接続ドライバで、Django と PostgreSQL を接続するためにインストールする必要があります。
以下のコードをターミナルに記述してください。
python manage.py makemigrations python manage.py migrate |
settings.py で Django PostgreSQL の接続を設定します。
settings.py で Database をデフォルトの SQLite から PostgreSQL に変更します。
d; |
ここです。
- Engine: Engine: .db.sqlite から .postgresql.psycopg2 に変更します。
- Name: 先ほどシェルで確認したDB名(私の場合はPostgres)を使用します。
- USER: 先ほどのユーザー名(Postgres)
- パスワード:先ほど入力したPostgreSQLのユーザ名のパスワードを記入
- Host: Dbのホスト名(localhost)
- Port: 先ほどのDBポート番号(私の場合は5433)です。
python manage.py runserver |
この記事もチェック:Djangoで入力フォームを作ってユーザーの入力を受け付ける方法
Django PostgreSQL の実装。
これで終わりです!あとは、私たちが行った変更を Django に知らせるための移行を行えば、準備は完了です!(笑)
python manage.py createsuperuser |
これはシェルからも確認できます。
Django DB で、SQLshell は DB に存在する全ての情報を表示するコードを書きます。
SELECT * FROM <model_name> |
INSERT INTO <model_name>(<fields>) VALUES <values> |
最後のエントリは、私たちのモデルです
これで終わりです! これで、サーバを動かすことが出来ます。
UPDATE <model_name> set column1 = value1 , column2 = value2 .... where condition; |
Django MySQL の記事と同じように、管理サイトに行くと、Django はスーパーユーザに関するエラーメッセージを表示します。
これは、スーパーユーザに関する情報とアイテムのレコードが、以前の DB SQLite にあり、新しい PostgreSQL にないためです。
ですから、ターミナルでスーパーユーザを再度作成する必要があります。
DELETE FROM <model_name> where <condition> |
これで完了です。
これで、PostgreSQL と Django Web フレームワークの接続に成功しました。
Django PostgreSQL データベースセットアップの操作を行う
MySQL のチュートリアルと同様、項目の追加/編集/削除を 2 つの方法で行うことができます。
管理者サイトか PHPMyAdmin サイトからです。
1) 管理サイトからのCRUD操作
これは、今まで使っていたよく知られた方法です。
ItemModelのアイテムの追加、編集、削除を管理サイトを通して行っていました。
しかし、Database を Django PostgreSQL に変更したため、Table 内のアイテムはすべて失われてしまいます。
そのため、いくつかのアイテムを追加する必要があります。
上記の情報は全て、自動的に Postgres DB に追加されます。
これは SQL シェルで確認できます。
シェルで、次のように記述します。
2) SQL シェルによる CRUD 操作
項目を追加するには SQLシェルで、次のように記述します。
項目が追加される。
編集する場合:コードを書く
削除する: コードを入力します。
管理画面でも確認することができます。
管理サイトを再読み込みすると、新しい項目が表示されます。
Django PostgreSQL を使うのがいかに簡単かをご覧ください!
この記事もチェック:Djangoで管理画面を作る方法を詳しく解説していく
まとめ
以上です! PostgreSQL と Django をどのように接続するか、すべて学びました。
練習として、PostgreSQL をデータベースとして使ったウェブアプリを作 ってみてください。
PostgreSQL についてもっと知りたい方は、公式サイトを参照してください。
ご安全に! 練習を続けてください!