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










