Python | FastAPIでAPI作成 ~その10:herokuを利用する(app作成からPostgreSQL利用まで)~

Python | FastAPIでAPI作成 ~その10:herokuを利用する(app作成からPostgreSQL利用まで)~

今回は前回の続きで、「PaaS」を提供している「heroku」にアプリを乗せてみましょう。

ちょっと長いので、2回に分けて掲載します。

Part1:herokuで環境構築&DB作成 ←今回!

Part2:appをデプロイ&接続テスト

前回の記事は以下から↓

herokuとは?

以下がWikipediaの情報です。

ベースとなるオペレーティングシステム (OS) はDebian、もしくはDebianをベースに開発されたUbuntuである。

初期はRubyによるウェブアプリケーションフレームワークRuby on Railsのみのサポートであったが、JavaNode.jsScalaClojurePythonPHPGoなど複数のプログラミング言語をサポートするようになった。

データベースはPostgreSQLMySQLCloudant英語版)、Couchbase ServerMongoDBRedisをサポートしている。

Heroku DNS Serverで実行されるアプリケーションは、FQDNが「アプリケーション名.herokuapp.com」となる。

Wikipediaより引用

手順

以下に手順を記載します。

①herokuにログインする

以下のURLからherokuにログインします。(アカウントは既に作成済とします)

②アプリケーションを作成する

画面右側 New>Create new appをクリックします。

以下のフォームに「App name」を入力する。

region(リージョン)は United States もしくは Europe のいずれかを選択。

利用するデータセンタの場所なので、日本に近いほうがいい?

③PaaS上にデータベースを作成する

作成したアプリケーションで利用するDBを作成します。今回はPostgreSQLを利用します。

1:上側タブ「Resources」をクリック

2:Addonの検索項目で「Heroku Postgres」と入力し、検索結果を選択する

3:作成したDBは以下から参照できます。

画面右上>Data(Heroku Data)から作成したDBの一覧が確認できます。

④HerokuCLIをインストールする

データのやり取りやアプリケーションをデプロイするにあたり、HerokuCLIが必要になってきますのでインストールします。

インストールは以下のリンク先から実行できます。

インストーラを実行します。

⑤ローカル環境にPostgreSQLをインストールする

Heroku PostgreSQLを利用するには、ローカルにもPostgreSQLを入れておく必要があるらしく、インストールします。

以下のリンクからPostgreSQLのインストーラを取得します。

インストーラを起動して、PostgreSQLをインストールします。(当たり前ですが、ユーザ「admin」のパスワードは忘れないように・・・・私は何度か忘れたことがあります・・・・)

⑥psqlコマンドが利用できるように環境設定する

PostgreSQL 14でデフォルト設定した場合は、以下の場所にパスを通します。

C:\Program Files\PostgreSQL\14\bin

コマンドプロンプトで「psql」を実行し、ログインを求められればパスが通っています。

⑦作成したデータベースにデータを登録する

やっと準備が整いました。

HrokuCLIを利用して「Heroku PostgreSQL」に接続してみます。

1:画面右上>Data(Heroku Data)から作成したDBの一覧を表示し、接続したいDBを選択します。

2:対象のDBのDatastore>Settings>Database Credentialsを選択します。

この中の「Heroku CLI」をクリップボードにコピーします。

3:コマンドプロンプトを開き、先ほどのコマンドをペーストして実行します。

以下のようにDatabaseに接続できれば成功です。

お試し:PostgreSQLでデータ操作

テーブルを作成

create table User_list ( ID TEXT NOT NULL, Name TEXT, Class TEXT);

データを挿入

insert into User_list values('M001','Takashi','A'); 
insert into User_list values('M002','Hanako','A'); 
insert into User_list values('M003','Hiroshi','B'); 
insert into User_list values('M004','Kyoko','B');

データを抽出

select * from User_list

クラウド上のHerokuにデータが上がったことを確認できました!

次回はappをデプロイしていきます!

ではまた!