【Python/Django】よく使うコマンドのまとめ(3) <PostgreSQLの操作>

#### 背景
Python/Djangoで開発をすすめるにあたり、よく使うコマンドをまとめておきます。

先人たちの知恵をお借りするなどして解決できたことを、この場をお借りして感謝するとともに、大変恐縮ですが自分のメモとしても、こちらへまとめておきます。

#### 環境
（本番環境）

- AWS EC2 (Amazon Linux 2)
- Python 3.7.9　　　　※2020/12/10時点のAmazon Linux2でのデフォルト
- Django 3.1.3
- PostgreSQL 11.5　　※同上
- Nginx 1.12　　　　　※同上
- Gunicorn
- Putty 0.74


（開発環境）

- Windwos 10 Pro
- Python 3.9.0
- Django 3.1.3
- PostgreSQL 13.1
- Nginx 1.19.5
- Gunicorn
- Putty 0.74


## 1. PostgreSQLの操作

※ ローカルマシン環境に、既にインストールは済んでいる前提です。

### 1-1. バージョンの確認

```:ターミナル
$ psql --version

psql (PostgreSQL) 13.1
```

### 1-2. ログイン

```:ターミナル
$ psql -U postgres

ユーザー postgres のパスワード:                 
psql (13.1)
"help" でヘルプを表示します。

postgres=#
```

### 1-3. データベースを作成する

```:ターミナル
postgres=# create database ＜データベース名＞;

CREATE DATABASE
```

### 1-4. データベースの一覧を確認する

```:ターミナル
postgres=# \l
                                          データベース一覧
     名前      |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
---------------+----------+------------------+----------+-------------------+-----------------------
 postgres      | postgres | UTF8             | C        | C                 |
 ＜ＤＢ名＞     | postgres | UTF8             | C        | C                 |
 template0     | postgres | UTF8             | C        | C                 | =c/postgres          +
               |          |                  |          |                   | postgres=CTc/postgres
 template1     | postgres | UTF8             | C        | C                 | =c/postgres          +
               |          |                  |          |                   | postgres=CTc/postgres
(4 行)

postgres=#  
```

### 1-5. データを確認する

#### 1-5-1. Python仮想環境に入り、`manage.py`の存在するディレクトリへ移動します。
#### 1-5-2. 下記を実行し、データベースユーザとパスワードの環境変数を設定します。

- (前提) プロジェクト設定ファイル：

```python:settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '＜データベース名＞',
        'USER': os.environ.get('DB_USER'),
        'PASSWORD': os.environ.get('DB_PASSWORD'),
        'HOST': '',
        'PORT': '',
    }
}
```

```:ターミナル
(venv_＜プロジェクト名＞) $ set DB_USER=＜ユーザー名＞
(venv_＜プロジェクト名＞) $ set DB_PASSWORD=＜パスワード＞
```

#### 1-5-3. 下記を実行して、データベース操作を可能とします。

```:ターミナル
(venv_＜プロジェクト名＞) $ python manage.py dbshell --settings ＜データベース名＞.settings

＜データベース名＞=#
```

#### 1-5-4. テーブル一覧の表示

```:ターミナル
＜データベース名＞=# \dt
```

#### 1-5-5. 特定のテーブルにおける全レコードを表示

```:ターミナル
＜データベース名＞=# select * from ＜テーブル名＞;
```

#### 1-5.6. その他
※ [PostgreSQLの使い方](https://www.dbonline.jp/postgresql/) をご参照ください。


#### 1-5-7. ログアウト

```:ターミナル
＜データベース名＞=# \q
または、
postgres=# \q
```

---
#### (関連)
[【Python/Django】よく使うコマンドのまとめ(1) ＜仮想環境、プロジェクト、アプリケーションの作成＞](https://qiita.com/_whitecat_22/items/6a35200ba958a63eb683)
[【Python/Django】よく使うコマンドのまとめ(2) ＜パッケージのインストール＞](https://qiita.com/_whitecat_22/items/d1d06ea1e280c1665482)
[【Python/Django】よく使うコマンドのまとめ(4)-前編- ＜本番運用：Amazon EC2 (Amazon Linux 2)＞](https://qiita.com/_whitecat_22/items/873befbe9de15421e840)
[【Python/Django】よく使うコマンドのまとめ(4)-後編- ＜本番運用：Amazon EC2 (Amazon Linux 2)＞](https://qiita.com/_whitecat_22/items/351d2ac5963c770284cb)

---
#### (編集後記)
データベースの各テーブルへ、どのような値が格納されるかをしっかりと確認しながら、アプリケーションの作成に努めていきます。