DjangoのPostgreSQLの使い方|インストールや接続、データ取得まで開設

スポンサーリンク

今回は、DjangoのPostgreSQLデータベースシステムについて学びます。

ここでは、以前に Django MySQL で行ったのと同様の操作を行います。

この記事は、MySQL の代わりに PostgreSQL を使うことに興味がある人の役に立ちます。

スポンサーリンク

PostgreSQLとは?

MySQLデータベース管理システムと同様に、PostgreSQLはデータベーステーブルの形でデータにアクセスし、保存し、処理するために使用されるRDBMSの別のタイプです。

PostgreSQLではSQL – Structured Query Languageが使用され、PostgreSQLのデータベースへのアクセス、様々なタスクの実行、および処理に使用されます。

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 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 内のアイテムはすべて失われてしまいます。

そのため、いくつかのアイテムを追加する必要があります。

SQL shell
SQL shell

上記の情報は全て、自動的に Postgres DB に追加されます。

これは SQL シェルで確認できます。

シェルで、次のように記述します。

Django DB
Django DB
DATABASES
DATABASES

2) SQL シェルによる CRUD 操作

項目を追加するには SQLシェルで、次のように記述します。

django DB
django DB

項目が追加される。

ItemModel via admin site
ItemModel via admin site

編集する場合:コードを書く

Django Table
Django Table
Insert
Insert

削除する: コードを入力します。

Edit
Edit
Delete
Delete

管理画面でも確認することができます。

管理サイトを再読み込みすると、新しい項目が表示されます。

Admin site
Admin site

Django PostgreSQL を使うのがいかに簡単かをご覧ください!

まとめ

以上です! PostgreSQL と Django をどのように接続するか、すべて学びました。

練習として、PostgreSQL をデータベースとして使ったウェブアプリを作 ってみてください。

PostgreSQL についてもっと知りたい方は、公式サイトを参照してください。

ご安全に! 練習を続けてください!

タイトルとURLをコピーしました