DjangoにPostgreSQLをインストールして設定する方法

アプリケーションにデータベースを追加すると、データの整合性とセキュリティが確保されます。PostgreSQL(Postgres)は、検討したいStructured Query Language(SQL)データベース管理システムです。

Postgresは、一般的なオペレーティングシステムのほとんどをサポートしており、最新のプログラミング言語と互換性があります。Postgresはまた、さまざまなデータやドキュメントのタイプを処理します。SQLのスキルは需要が高いため、PostgreSQLの設定と使用方法を学ぶことは有利です。

DjangoアプリケーションでPostgresをインストール、設定、および使用する方法を学びます。また、データベースに追加、保存、およびデータベースからデータを取得することにより、データベースの機能をテストします。

1. システムにPostgreSQLをインストールする

以下の手順では、UbuntuオペレーティングシステムにPostgresをインストールする方法を説明します。Windowsユーザーの場合は、このステップバイステップガイドに従ってWindowsにPostgresをインストールできます。

Postgresをインストールする前に、次のコマンドでバージョンパッケージとその依存関係を更新します。

$ sudo apt-get update

次に、次のコマンドでPostgreSQLをインストールします。

$ sudo apt-get install postgresql postgresql-contrib libpq-dev

インストールの確認を求められたら、Yを押してYesを選択します。

次のコマンドを使用してサーバーに接続します。

$ sudo -i -u postgres

次に、データベースクライアントを使用して、インストールされているPostgresのバージョンを確認します。

コマンドpsql --versionを実行します。

postgres@nameofaccount:~$ psql --version

出力には、次のようにPostgresのバージョンが表示されます。

psql (PostgreSQL) 14.5 (Ubuntu 14.5-0ubuntu0.22.04.1)

exitコマンドを実行してPostgresアカウントを終了します。

postgres@nameofaccount:~$ exit

2. データベースを作成する

Djangoアプリに接続するデータベースを作成する必要があります。Postgresシェルに戻り、次のコマンドを連続して実行します。

sudo -i -u postgres
$ psql

次に、クライアントを使用してサーバーにデータベースを作成します。

postgres=# create database new_db;

サーバーは、データベースを作成するとCREATE DATABASEという用語を返します。また、\lコマンドを使用してシステム内のすべてのデータベースをリストすることでも確認できます。

postgres=# \l

PostgreSQLの構造

一般的なSQLデータベースと同様に、PostgreSQLはデータをテーブルに格納します。テーブルは、アプリケーション内のさまざまな項目/モデルを表します。テーブルには、固定数の列と行があります。

各テーブルには、プライマリキーと呼ばれる特定の列があり、テーブルに格納されている各行の一意の識別子です。テーブルには、別のテーブルのプライマリキーに接続する外部キーがある場合もあります。

外部キーは、2つのテーブル間の関係を定義します。

次に、Djangoアプリを作成し、データベースをリンクする必要があります。しかし、まず、アプリとデータベースの接続に役立つpsycopg2をインストールします。

3. DjangoとPsycopg2ライブラリをインストールする

PostgresをDjangoアプリに接続するには、psycopg2ライブラリをインストールする必要があります。これは、Djangoと接続して通信するのに役立つPostgresの依存関係です。

次のコマンドを実行してpsycopg2Djangoをインストールします。

$ pipenv install psycopg2 Django

4. Djangoアプリを作成する

Postgresデータベースを使用するDjangoアプリを作成する必要があります。まず、アプリをサポートするためにmybomaというプロジェクトを作成します。Djangoプロジェクトは、アプリの実行に必要な依存関係とアプリケーション設定を自動生成します。

Boma-watchという名前のフォルダーを作成し、次のコマンドでそこに移動します。

$ mkdir Boma-watch
$ cd Boma-watch

次に、次のコマンドでDjangoプロジェクトを作成します。

$ django-admin startproject myboma .

コマンドの最後にピリオドを追加してください。そうしないと、Djangoはプロジェクトを格納するための新しいフォルダーを作成します。

次に、次のコマンドでbomaという名前の新しいアプリを作成します。

$ django startapp boma

以前にDjangoを使用したことがない場合は、Djangoの初心者向けガイドから始めることができます。ブラウザでアプリを実行して動作を確認したら、次のセクションでデータベースに接続します。

5. データベースをDjangoアプリに接続する

次の手順を使用して、作成したデータベースにDjangoアプリを接続します。

ステップ1:プロジェクト設定を変更してPostgresを使用する

DjangoアプリをPostgresに接続するには、プロジェクト設定を変更する必要があります。プロジェクトのsettings.pyファイルに移動します。次に、DATABASES設定を変更してPostgresの設定を追加します。

USERPASSWORDpsqlのユーザー名とパスワードに置き換えます。

#......DATABASES = {'default': {'ENGINE':'django.db.backends.postgresql','NAME':'new_db','USER':'morine','PASSWORD':'password',}}

ステップ2:タイムゾーンを更新する

次に、settings.pyファイルで、タイムゾーンを自分の所在地に合わせて設定します。Djangoプロジェクトは、UTCタイムゾーンで事前に設定されています。

TIME_ZONE = Africa/Nairobi

ステップ3:モデルを作成する

アプリにプロフィールモデルを作成します。このモデルクラスを使用して、データベースにテーブルを作成し、アプリの名前とバイオデータを格納します。

class Profile(models.Model):name = models.CharField(max_length=30)bio = models.TextField(max_length=100)def __str__(self):return self.name

ステップ4:マイグレーションを開始する

マイグレーションを開始するには、次のコマンドを実行します。

(virtual)$ python manage.py makemigrations boma
(virtual)$ python manage.py migrate

正常なマイグレーションはこのようになります。

python manage.py migrateコマンドは、INSTALLED_APPS設定> models.pyファイルからアプリを選択し、各モデルのテーブルを作成します。Postgresをアプリケーションに正常に接続しました。

これで、アプリケーションでCREATE、READ、UPDATE、およびDELETE(CRUD)コマンドをテストできます。

6. アプリでCRUDコマンドをテストする

DjangoのPython APIを使用すると、いくつかのCRUDデータベース操作を実行できます。APIは関数をモデルと接続して、データベースを操作できるようにします。

次のコマンドを使用して、DjangoプロジェクトでPythonシェルを開きます。

(virtual)$ python manage.py shell

このコマンドは、CRUD操作をテストできるコンソールを開きます。

作成操作

最初に、次のコマンドを使用してmodelsモジュールからProfileモデルをインポートします。

from boma.models import Profile

次に、Profileクラスのインスタンスを作成し、データを渡します。

prof1 = Profile.objects.create(name ='Ken',bio ='I am a Scorpio')

次に、データベースにデータを保存します。

prof1.save()

読み取り操作

データベースにデータを作成して保存したら、クエリを実行して保存したデータを取得できます。

Profile.objects.all()を使用して、データベースのProfileテーブルにあるすべてのデータを取得します。

Profile.objects.all() #outputs 

主キーまたはpkを使用して、単一のオブジェクトを取得することもできます。これらは、データベースに保存された各アイテムに割り当てられた番号です。

Profile.objects.get(pk = 1) #outputs 

更新操作

次のコマンドを使用して、保存したデータを更新できます。

Profile.objects.filter(id = 1).update(name ='Kim';) #outputs 1

名前が更新されたことを確認するには、次のコマンドを実行します。

Profile.objects.filter(id = 1) #outputs 

削除操作

次のコマンドを使用して、保存したアイテムを削除できます。

Profile.objects.filter(id = 1).delete() #outputs (1, {app.Profile: 1})

削除を確認するには、次のコマンドを実行します。

Profile.objects.filter(id = 1) #outputs 

クエリセットが空であることがわかります。これは、データがデータベースに存在しなくなったことを示しています。

PostgreSQLを使用する理由

Postgresは、最も高度なSQLデータベースの1つです。そのオープンソースのビルドにより、パフォーマンスが常に改善されます。

ワークロードの管理はより簡単になり、データベースのソートはリリースごとに改善されます。Postgresが人気のある理由の1つは、ほとんどの最新のプログラミング言語とオペレーティングシステムと互換性があることです。