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.py
がpydanticモデルを含んでいること、schema.py
がデータベーススキーマの生成に使用される_データベース_モデルを含んでいることです。
モデルとスキーマファイルの充実
ここでは、ユーザーモデルとスキーマモデルを作成し、データベースにユーザーテーブルを作成できるようにします。両ファイルの動作については、FastAPIの素晴らしいチュートリアルで詳しく説明されているので、参考にしてください。
データベースURLの設定
SQLALCHEMY_DATABASE_URL
へ進み、SupabaseダッシュボードにあるURLに変更してください(執筆時点のスクリーンショットは以下の通りです)
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に適用します。その後、テーブルエディターで新しく作成されたテーブルを見ることができるはずです。
結論
ソースコードの最終状態は、この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