Cloudflare Workers Pythonで既存DBへ直結、ブリッジを外せるか

Cloudflare Workers Python環境で、Hyperdrive経由のPostgreSQL/MySQL直接接続が可能になりました。データベース専用ブリッジを外せる条件、Workers Paidの料金、対応ドライバー、キャッシュとSQLの制約、安全な接続テストの手順を解説します。

Wednesday, September 16, 2026Omid Saffari
Cloudflare Workers Pythonで既存DBへ直結、ブリッジを外せるか

2026年9月16日、CloudflareはCloudflare Workers Python環境からHyperdrive経由でPostgreSQLとMySQLへ直接接続できる経路を開きました。既存データベースにつなぐためだけに別のHTTPサービスを用意していたWorkerなら、そのサービスを外せる可能性があります。アーキテクチャだけでなく、毎月の請求額も変わるアップデートです。

Cloudflare Workers Pythonでもデータベースは移さなくていい

今回のリリースで重要なのは、移行せずに済むものです。

Hyperdriveは、Cloudflare Workerと既存のPostgreSQLまたはMySQLデータベースをつなぐマネージド接続レイヤーです。新しいデータベースではなく、レコードをCloudflareへコピーする仕組みでもありません。Pythonコードは、Hyperdriveバインディングから渡される接続情報を使い、通常のデータベースドライバーでTCP接続を開きます。背後では、Hyperdriveがデータベースへの長期接続プールを管理します。

これにより、従来よく使われていた回避策が変わります。データベースへ直接接続できないPython Workerでは、SQLを実行するためだけの小さなAPIやサーバーを呼び出す構成が必要でした。接続経路は次のとおりです。

従来: Python Worker → データベースブリッジ → PostgreSQLまたはMySQL

現在: Python Worker → Hyperdrive → PostgreSQLまたはMySQL

CloudflareはWorkerの近くで接続を確立し、接続プールはオリジンデータベースの近くに維持します。Hyperdriveガイドによると、一般的な構成では最初のクエリまでに7往復が発生します。内訳はTCPが1回、TLSが3回、データベース認証が3回です。プール内の接続を再利用すれば、短時間で終了するWorkerが呼び出されるたびに、この一連の接続処理を繰り返す必要がありません。

Python WorkerがHyperdrive経由で既存データベースへ接続し、データベース専用ブリッジを外した構成図
データベースはそのままです。データベース通信だけを担っていたブリッジは、Hyperdriveに置き換えられます。

利用条件は明確です。Python Workersでは互換性の日付を2026-09-08以降にする必要があり、この機能はまだベータ版です。CloudflareはPostgreSQL用としてasyncpg、pg8000、psycopgを、MySQL用としてaiomysqlとpymysqlをテスト済みです。推奨ドライバーはasyncpgとaiomysqlです。

Cloudflareは、ほかのTCPドライバーも動作する可能性があるとしています。ただし、すべてのパッケージ、ORM、既存アプリケーションの動作を保証しているわけではありません。データベース互換性は移行の最初の関門にすぎず、それだけで移行が完了するわけではありません。

Cloudflare Hyperdriveで変わる月額コストの計算式

すでにPythonアプリをWorkersで動かし、Workerからデータベースへ接続するためだけにブリッジ費用を払っている場合、最もわかりやすいコスト削減が見込めます。

計算は単純です。

現在の月額コスト = データベース + Worker + ブリッジのホスティング

移行後に見込まれる月額コスト = データベース + Worker

データベース料金は残ります。Hyperdriveに組み込まれた接続プールとクエリキャッシュはWorkers Paidで別料金がかからず、Hyperdriveにはエグレス料金もありません。アカウントがすでにWorkersの付属利用枠に収まっているなら、この接続経路によって増えるCloudflare料金は$0です。実際に削減できる現金支出は、廃止できたブリッジのホスティング料金です。

保守負担も同じ計算に含める必要があります。ブリッジを外せば、デプロイ先、ヘルスチェック、シークレット一式、ログストリーム、障害境界をそれぞれ1つずつ減らせる可能性があります。ただし、誰が保守し、どの程度の頻度で問題を起こしているかを把握するまでは、その作業に金額を割り当てるべきではありません。

新規の有料アカウントでは、Workers Paidは1アカウントあたり月額$5からです。毎月1,000万リクエストと3,000万CPUミリ秒が含まれます。超過分は追加100万リクエストごとに$0.30、追加100万CPUミリ秒ごとに$0.02です。このプランでは、Hyperdriveのデータベースクエリ数は無制限とされています。

Freeプランでも小規模な検証は可能です。Workerリクエストは1日100,000件、Hyperdriveのデータベースクエリも1日100,000件まで含まれ、1回の呼び出しで使えるCPU時間は10ミリ秒です。リクエスト数とデータベースクエリ数は別々に数えられます。1回のリクエストで複数のSQL文を実行すれば、データベースクエリを複数回消費することがあります。

明日から試せるケース

FastAPIサービスを運営する個人創業者

ある創業者が、マネージドPostgreSQLデータベースの手前でFastAPI Workerを動かし、HTTPリクエストを受けてSQLを実行するだけの小さなコンテナも運用しているとします。そのコンテナにビジネスロジックがなければ、asyncpgを使ったテストでHyperdriveに置き換えられるか確認できます。

メリットは、新しいデータベースへ移ることではありません。現在のスキーマ、バックアップ、プロバイダーを維持したまま、接続アダプターとしてのみ存在していたサービスを削除できる点です。まず1つのルートを移行し、結果とレイテンシーを比較します。本番環境で同じ挙動を確認してからブリッジを外すべきです。

顧客のMySQLデータベースを扱う小規模エージェンシー

小規模なエージェンシーでは、それぞれ顧客のMySQLデータベースへ接続する小さなPython APIを複数保守していることがあります。新しい経路なら、条件に合うアプリごとにデータベースプロキシをデプロイする代わりに、Worker内でaiomysqlまたはpymysqlをテストできます。

ここでの利点は、運用を統一できることです。エージェンシーは1つのWorkerデプロイ経路と、データベースごとに1つのHyperdrive設定を使えます。一方、テナント認可、スキーマ変換、監査など、クエリを中継する以上の処理をブリッジが担っている場合は、そのまま残します。

読み取り中心のエンドポイントを1つ移すプラットフォームチーム

プラットフォームチームがバックエンド全体を移行する必要はありません。一般公開されている読み取り中心のPythonエンドポイントを1つだけWorkersへ移し、リージョン内のデータベースは維持したまま、Hyperdriveにオリジン接続をプールさせることができます。

このケースでは、キャッシュ方針も明示的に決める必要があります。Hyperdriveは対象となる読み取り結果をデフォルトで60秒間キャッシュし、再検証中はさらに15秒間、古い結果を返す可能性があります。公開カタログやコンテンツの読み取りなら許容できるかもしれません。認証、権限、請求状態、書き込み直後の読み取りには、キャッシュを無効にした別のHyperdrive設定を使うべきです。

以前のDjangoとFastAPIの比較は、フレームワーク選びにも引き続き役立ちます。今回のリリースで変わったのは、その判断材料の一部です。PostgreSQLまたはMySQLを維持する構成がPython Workerの正式な接続経路になりましたが、DjangoやFastAPIアプリケーションの残りすべてが動作すると保証されたわけではありません。

最小構成で安全に接続をテストする

本番環境ではないMySQLデータベースと、権限を絞ったテストユーザーを使います。目的はSELECT 1で接続経路を確認することであり、顧客データを使って完全な移行を予行演習することではありません。

最初のテストでキャッシュされていないデータベースへの往復時間を測れるよう、キャッシュを無効にしたHyperdrive設定を作成します。

Bash
npx wrangler hyperdrive create python-db-test --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --caching-disabled

Wranglerが返す設定IDをwrangler.tomlへコピーします。次の日付は、最低要件の2026-09-08より後です。

TOML
name = "python-hyperdrive"
main = "src/main.py"
compatibility_date = "2026-09-16"
compatibility_flags = ["python_workers"]

[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<HYPERDRIVE_CONFIG_ID>"

ドライバーをpyproject.tomlへ追加します。

TOML
[project]
dependencies = [
    "aiomysql",
]

続いて、Cloudflareが案内している接続テストをsrc/main.pyで実行します。

Python
import aiomysql
from workers import Response, WorkerEntrypoint


class Default(WorkerEntrypoint):
    async def fetch(self, request):
        hd = self.env.HYPERDRIVE
        connection = await aiomysql.connect(
            host=hd.host,
            port=int(hd.port),
            user=hd.user,
            password=hd.password,
            db=hd.database,
            ssl=None,
        )
        try:
            cursor = await connection.cursor()
            await cursor.execute("SELECT 1")
            result = await cursor.fetchone()
            return Response.json({"result": result[0]})
        finally:
            connection.close()

案内されているPython Workers用コマンドでデプロイします。

Bash
uv run pywrangler deploy

一見すると問題がありそうなのはssl=Noneの行です。Cloudflareのサンプルでは、これはWorkerからHyperdriveへのドライバー接続に対する指定です。Hyperdriveからオリジンデータベースへの接続には引き続きTLSが必要で、安全でない平文のオリジン接続はサポートされません。

ブリッジは不要になる場合があるが、自動的に時代遅れにはならない

今回変わったのは接続経路です。Python Workersが制約のないCPythonサーバーになったわけではありません。

Pythonパッケージは、pure Pythonパッケージ、PyEmscripten wheel、Pyodideに含まれるパッケージを利用できます。CloudflareはWebAssemblyパッケージのサポートを今も初期段階と位置づけているため、必要な依存関係がなければ移行は止まります。ドライバーとORMのドキュメントが現在サポートしているのは同期版SQLAlchemyのみです。Workers環境はgreenletをサポートしないため、非同期SQLAlchemyは利用できません。

データベースプロトコルにも制約があります。HyperdriveはPostgreSQL 9.0から17.x、MySQL 5.7から8.x、およびMariaDBに対応します。SQL ServerとMongoDBには対応しません。PostgreSQLのアドバイザリーロック、LISTEN、NOTIFYは利用できません。MySQLの複文クエリとプロトコルレベルのプリペアドステートメントも対象外です。FreeとPaidの両方で、クエリの最長実行時間は60秒です。

接続プールを導入すると、セッションに関する前提も変わります。Hyperdriveはトランザクションプーリングを採用しており、トランザクション終了時にオリジン接続がプールへ戻ります。トランザクションをまたいでセッション状態が残ることを前提にしたコードは、見直しが必要です。長時間のトランザクションはプールを使い切り、並行処理の利点を失わせる可能性もあります。

月曜日に着手すること

月曜日にアプリケーションを移行するのではありません。データベース接続だけを担うブリッジが本当に必要か、まず確かめます。

  1. 使い捨て可能な経路を1つ選ぶ

    権限を絞ったユーザーで、本番環境ではないデータベースまたはレプリカを作成します。無害なレコードを読み取り、セッション状態、ロック、書き込み直後の整合性に依存しないルートを1つ選びます。

  2. 接続のスモークテストを行う

    上記の小さなWorkerをデプロイし、Hyperdrive経由でSELECT 1が成功することを確認します。Workerのエラー率、CPU時間、経過時間、データベース接続数を記録します。

  3. 実際のドライバーとクエリを試す

    スモークテスト用のクエリを、そのルートで使う実際のドライバーと代表的なクエリ1つに置き換えます。返されるデータ、トランザクション動作、キャッシュ設定、プール使用量を現在のブリッジと比較します。

  4. 削除の採算を計算する

    ブリッジの月額ホスティング料金に加え、デプロイ、パッチ適用、監視、復旧に費やす時間を書き出します。追加のWorkers利用料と継続的なHyperdrive運用の負担を差し引きます。この数値と互換性テストの両方が移行を支持した場合に限り、ブリッジを削除します。

ブリッジの役割がデータベース接続だけで、アプリがPostgreSQLまたはMySQLを使い、テスト済みドライバーが対象ルートに対応するなら、今週中に動き始める価値があります。非同期SQLAlchemy、利用できないパッケージ、未対応のSQL動作、または切り分けられていない厳密な書き込み後読み取り整合性に依存するなら待つべきです。アプリを現在のサーバーで運用し続ける場合や、Hyperdriveでは置き換えられないビジネスロジックをブリッジが担っている場合は、今回の変更による影響はありません。

次のプラットフォーム変更も月曜日の判断に落とし込んで受け取りたい方は、ニュースレターに登録してください。

最終更新
2026年9月16日
カテゴリー
Explained

Googleでこのサイトを優先する

omidsaffari.comをGoogle検索の優先ソースに追加

omidsaffari.comを優先ソースに設定すると、GoogleがTop Stories・AI Overviews・AI Modeであなたのために優先表示します。

AI 文字起こしの料金は据え置き:Grok Voice Transcribe 2.0移行ガイド

AI 文字起こしの料金は据え置き:Grok Voice Transcribe 2.0移行ガイド

Grok Voice Transcribe 2.0のAI 文字起こし料金は、バッチが音声1時間あたり$0.10、ストリーミングが$0.20のままです。デフォルトモデル変更で起こり得る出力差、移行前に確認すべき総コスト、1.0と2.0を同条件で検証して本番モデルを固定する手順を、運用担当者向けに整理します。2026年9月20日Explained
HAR ファイルで原因を追う:Cloudflare Browser Runの失敗調査

HAR ファイルで原因を追う:Cloudflare Browser Runの失敗調査

Cloudflare Browser RunのSession RecordingにInspectパネルが加わり、完了後のログ、通信、最終DOMを確認できるようになりました。HAR ファイルで失敗原因を絞り込み、不要な再実行を減らす手順、料金への影響、録画では見えない領域まで、実務向けに分かりやすく解説します。2026年9月19日Explained
v0でnpm プライベートパッケージを活用する:社内コンポーネント再利用の実践ガイド

v0でnpm プライベートパッケージを活用する:社内コンポーネント再利用の実践ガイド

v0が共有環境変数経由でnpm プライベートパッケージに対応。NPM_TOKENとNPM_RCの選び方、認証情報をモデルやSandboxに渡さない仕組み、社内コンポーネントを試作から本番へ引き継ぐ設定手順、料金と実務上の注意点を整理し、差し替え工数を減らせるか判断する方法を解説します。2026年9月19日Explained
Claude Code 料金を見直す:auto modeの分類器課金が消える条件

Claude Code 料金を見直す:auto modeの分類器課金が消える条件

Claude Code 2.1.278では、auto modeの安全判定をサーバー側で処理できるセッションの分類器リクエスト課金がなくなります。API、Enterprise、クラウド、ゲートウェイ環境で適用条件を見極め、/statusで実際の課金経路を確認し、予算へ正しく反映する方法を解説します。2026年9月19日Explained
Vercel ビルド高速化:Turboを1回だけ使う方法と料金

Vercel ビルド高速化:Turboを1回だけ使う方法と料金

VercelのPro/Enterpriseで、プロジェクト設定を変えずに1回のデプロイだけTurboを指定する方法を解説します。GitHubのコミットマーカー、Vercel CLI、デプロイAPIという3つの経路と、1分あたり$0.105からの料金、権限不足時のフォールバック、通常ビルドとの比較手順まで整理しました。2026年9月18日Explained
ChatGPT Word連携の実力:できること・料金・導入手順

ChatGPT Word連携の実力:できること・料金・導入手順

ChatGPT Word連携を使えば、Wordのサイドバーで下書き、要約、選択範囲の修正、見出し調整まで完結します。利用条件、共有される使用量、料金の考え方、データ境界、導入手順を、提案書やSOPの具体例とともに解説。コピペ往復を減らしつつ、事実や約束を守るレビュー方法も紹介します。2026年9月18日Explained
Google Antigravity移行ガイド:10月5日までのローカルジョブ対応

Google Antigravity移行ガイド:10月5日までのローカルジョブ対応

Google Antigravityの5月版エージェントは2026年10月5日に停止予定です。出力のみのジョブはID変更で済みますが、ローカルツールやfunction_callを扱う環境には、新しいツール名、PascalCase引数、行範囲編集に対応するアダプター改修が必要です。安全な移行手順を解説します。2026年9月18日Explained
Cloudflare WorkersのRPCトレースで遅延箇所を特定する

Cloudflare WorkersのRPCトレースで遅延箇所を特定する

Cloudflare WorkersのRPCトレースで、遅い顧客リクエストを別のWorkerやDurable Objectまで追跡。担当サービスとメソッドを見つける手順、サンプリング率、保持期間、2026年10月1日以降のスパン単位の料金まで、チェックアウトの例で実践的に解説します。2026年9月17日Explained
ニュースレター

毎週日曜、一通の手紙。動くシステムの話。感想戦ではなく。

週刊。スパムなし。いつでも解除できます。