プログラミングを頑張る土木系専攻大学院生のブログ

主にプログラミングについて開発備忘録的な形で投稿しています。

【2025年10月】 SupabaseでSQLiteからPostgreSQLへ移行する方法!!~ UIの落とし穴と移行手順まとめ

SQLiteで開発していたローカルWebアプリを、PostgreSQLへ移行する必要がありました。
ChatGPTに相談したところ、Supabaseという選択肢を提案してくれました。

「なるほど、PostgreSQLがサーバレスで使えるなら楽そう」と思い、Supabaseを採用してみたのですが……
DB接続情報の場所が分からず大苦戦。

この記事では、Supabaseの最新UIでPostgreSQL接続情報を探す方法
そして FastAPI + SQLModel 環境でPostgreSQLへ切り替える手順をまとめます。


🔧 開発環境

  • バックエンド:FastAPI
  • フロントエンド:React
  • DBSQLite → Supabase(PostgreSQL

✍️ なぜブログ化したのか?

ローカル開発では SQLite を使っていましたが、将来の運用も見据えてPostgreSQL への移行を決意。

ChatGPTに相談したところ、Supabaseを提案されました。

さっそく使ってみたものの…

「接続情報どこ!?見当たらない!!」

SupabaseのUIが変わっており、ChatGPTの回答通りに探しても全然見つからない。
おそらく、同じように迷う方が多いと思うので、この記事が参考になれば幸いです。


🛠 Supabase のセットアップ手順

① アカウント・プロジェクト作成

ここはネットに情報が多くあるので割愛します。

おすすめ記事: Supabaseの概要と環境構築(CraftStadium)


PostgreSQL 接続情報の取得(ここがハマりポイント)

ChatGPTからは以下のような回答がありました。

最新UIでの「PostgreSQL接続情報」の探し方

  1. 「Settings」→「Database」または「Database Settings」へ移動
  2. 「Connection string」や「Connection info」セクションを探す
  3. ここに「接続文字列(Connection string)」や「Host」「Port」「User」「Password」などが個別に表示されているはずです。
    • もし「Connection string」が直接見つからない場合は、下記の情報を組み合わせて自分で作成します。

…でも、Settingsにそんな項目ありませんでした。


✅ 正解:ヘッダーの「Connect(🔌)」アイコンから確認!

Supabaseの最新UIでは、プロジェクト画面右上の「Connect」ボタン(コンセントマーク)から接続情報を確認できます。

  • Host / Port / User / Password / Connection string
  • REST APIやGraphQL APIなどもまとめて表示されます

📷 接続情報の場所(画像)

🔌 Connect ボタンの場所

📋 接続情報一覧画面

🔄 FastAPI 側のDB設定をPostgreSQLに変更する手順

💡 使用ライブラリ

fastapi  
sqlmodel  
sqlalchemy  
uvicorn  
requests  
python-dotenv  
alembic  
psycopg2-binary

.env ファイルを用意・設定

.env ファイルに以下を記述します:

DATABASE_URL=postgresql://postgres:<パスワード>@<db-name>.supabase.co:5432/postgres
  • <パスワード><db-name> はSupabaseの「Connect」で確認した情報に置き換えてください。

database.py の修正

SQLiteからPostgreSQLへの切り替えは、以下のように書き換えます。

✅ 変更前(SQLite

sqlite_file_name = "test.db"
sqlite_url = f"sqlite:///{sqlite_file_name}"
engine = create_engine(sqlite_url, echo=True, connect_args={"check_same_thread": False})

✅ 変更後(PostgreSQL

import os
from dotenv import load_dotenv
from sqlmodel import SQLModel, create_engine

load_dotenv()
db_url = os.getenv("DATABASE_URL", "sqlite:///test.db")
engine = create_engine(db_url, echo=True)

🔹 PostgreSQLでは connect_args={"check_same_thread": False} は不要です。


③ Alembic の設定変更

alembic.ini の変更:

sqlalchemy.url =

空欄にしておきます。

alembic/env.py の変更:

import os
from dotenv import load_dotenv

load_dotenv()
url = os.getenv("DATABASE_URL")

# configオブジェクトにURLを設定
config.set_main_option("sqlalchemy.url", url)

これで .env 経由で接続できます。


④ 起動・マイグレーション確認

FastAPI起動:

uvicorn main:app --reload

DBマイグレーション実行:

alembic upgrade head

🎉 成功画面(画像)

PostgreSQLに接続された状態でFastAPIが起動できました!


✅ まとめ

項目 ポイント
Supabase UIの罠 接続情報は「Settings」ではなく「Connect」ボタンから
.envの記述 Supabaseの情報を正確に反映
create_engineの引数 SQLitePostgreSQLでは異なる(connect_args不要)
Alembic対応 .envから接続情報を取得する構成に変更

💬 おわりに

Supabaseは簡単にPostgreSQLを使える便利なサービスです。

この記事が、これからSQLitePostgreSQL(Supabase)に移行しようとしている方の助けになれば幸いです!