FastAPIとSupabaseDBのセットアップ

Supabaseとは何ですか?

SupabaseはオープンソースのFirebaseの代替品です。Postgresデータベース、認証機能、即座に使用できるAPI、エッジ関数、リアルタイムでデータの購読が可能なサブスクリプション、そしてストレージ機能が備えられています。

FastAPIとは何ですか?

FastAPIはモダンで、速さ(高性能)が特徴のAPIを構築するためのPythonウェブフレームワークです。APIを素早く立ち上げるためによく使われています。

ここでは、SupabaseをPostgresデータベースとして利用し、FastAPIに接続する方法を示していきます。こうすることで、マイグレーションの管理が可能になります。マイグレーションバージョニングツールとしてAlembicを使用します。この例は、FastAPIによる例からも大いに参考にしています。

セットアップ

まずは仮想環境をセットアップし、いくつかの依存関係をインストールしましょう。

virtualenv .env
pip3 install supabase fastapi psycopg2 alembic

基本ファイルの作成

supafastディレクトリ内で、以下のコマンドを実行して核となるファイルを作成します。
touch app.py __init__.py database.py models.py schema.py
重要な点は、models.pypydanticモデルを含んでいること、schema.pyがデータベーススキーマの生成に使用される_データベース_モデルを含んでいることです。

モデルとスキーマファイルの充実

ここでは、ユーザーモデルとスキーマモデルを作成し、データベースにユーザーテーブルを作成できるようにします。両ファイルの動作については、FastAPIの素晴らしいチュートリアルで詳しく説明されているので、参考にしてください。

データベースURLの設定

SQLALCHEMY_DATABASE_URLへ進み、SupabaseダッシュボードにあるURLに変更してください(執筆時点のスクリーンショットは以下の通りです)

Image description

alembic init migrationsを実行し、alembicマイグレーションを含むmigrationsフォルダを生成します。

データベースモデルをAlembicにリンクする

Alembicにmodels.pyで定義したFastAPIデータベースモデルを表示させる必要があります。ここではUserモデルしかありませんので、migrations/env.pyファイルに以下を追加してインポートしましょう。

from supafast.models import User

migrations/env.pyに上記のコードを追加します。

マイグレーションの生成と適用

ここから初期マイグレーションを生成するために次を実行します。

alembic revision --autogenerate -m "generate initial migration"

これでmigrations/versions/下に新しいバージョンのマイグレーションが作成されます。

次にalembic upgrade headを実行して、マイグレーションの変更をSupabase DBに適用します。その後、テーブルエディターで新しく作成されたテーブルを見ることができるはずです。

Image description

結論

ソースコードの最終状態は、このGitHubリポジトリで確認できます。このチュートリアルの動画版をご覧になりたい方は、ビデオを視聴できます。

認証、関数、ストレージ及びSupabase Python SDKのその他の項目についての包括的な概要については、Patrickが丁寧にまとめてくれたSupabase Pythonのクラッシュコースもチェックしてみてください。

質問がある場合は、下のコメント欄にお気軽にどうぞ。

参考文献:
[1] https://fastapi.tiangolo.com/tutorial/

こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/j0/setting-up-fastapi-with-supabasedb-2jm0