OSS探訪GitHubでログイン

asyncioからPostgreSQLのbinary protocolを直接扱う高性能Pythonドライバ

OSS規模スコア 244.9OSS健全度 100
スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
8,098
主要言語
Python
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/05
ページ内ナビ

概要

asyncpgはPythonのasyncio向けに設計されたPostgreSQL client libraryです。PostgreSQL server protocolを直接実装し、prepared statement、cursor、型変換、connection poolなどを非同期APIで扱えます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

asyncio向けAPIでPostgreSQL connectionとqueryを扱う

asyncpg.connect()で非同期connectionを作成し、fetch()・fetchrow()・execute()などでqueryを実行します。PostgreSQL protocolを直接扱う設計で、DB-APIのgeneric facadeを介さずPostgreSQL固有機能へアクセスできます。

出典:[2]

prepared statement・cursor・複合型やarrayのcodecを利用する

prepared statement、scrollable cursor、query resultの部分iterationに加え、composite typeやarrayの自動encode/decode、custom type codecを提供します。connection poolもasync application向けに利用できます。

出典:[2]

向いている用途

PostgreSQL I/Oが中心のasync Python backendに向く

asyncioベースのWeb/API serverやevent-driven serviceで、PostgreSQLへの待ち時間をasync taskとして扱い、driver layerを明示的に制御したい場合に適します。

出典:[2]

導入前の確認

0.31.0はPython 3.9以上・PostgreSQL 9.5〜18を対象にする

asyncpg 0.31.0はPython 3.9以上を要求し、PostgreSQL 9.5〜18をsupport対象としています。0.31.0ではPython 3.14とexperimentalなsubinterpreter/free-threading対応が追加されています。性能値はupstream benchmarkの条件に依存するため、実workloadではpool size・query pattern・network latencyを含めて測定してください。

出典:[2][3][4]

参考にした公式資料

  1. [1]MagicStack/asyncpg — GitHub repository(2026-10-06)
  2. [2]asyncpg 0.31.0 — README(2026-10-06)
  3. [3]asyncpg 0.31.0 — setup.py(2026-10-06)
  4. [4]asyncpg 0.31.0 release(2026-10-06)
  5. [5]asyncpg Apache-2.0 license(2026-10-06)
編集部からの補足

PostgreSQL専用としてprotocolや型機能へ直接アクセスできる点が魅力です。ORMやgeneric DB abstractionが不要なasync serviceでは特に扱いやすい一方、pool sizeやtransaction境界はapplication側で明示的に設計してください。

3ステップで試す

  1. 1

    asyncpg 0.31.0を導入する

    確認対象の安定版を固定して導入します。asyncpg 0.31.0はPython 3.9以上が必要です。

    python -m pip install "asyncpg==0.31.0"
  2. 2

    検証用PostgreSQLの接続先を指定する

    USER・PASSWORD・HOST・DBNAMEを、変更してよい検証用PostgreSQLの値へ置き換えます。実credentialをrepositoryへ保存しないでください。

    export DATABASE_URL='postgresql://USER:PASSWORD@HOST:5432/DBNAME'
  3. 3

    asyncioからread-only queryを実行する

    read-onlyなSELECTでconnectionとquery実行を確認します。schemaやdataは変更しません。

    python - <<'PY' import asyncio import os import asyncpg async def main(): conn = await asyncpg.connect(os.environ['DATABASE_URL']) try: print(await conn.fetchval('select version()')) finally: await conn.close() asyncio.run(main()) PY
公式READMEで確認

成長

成長の推移 · 直近30日

8,098 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • async-programming
  • async-python
  • asyncio
  • database-driver
  • high-performance
  • postgresql
  • python
  • python-3
Stars
8,098
Forks
472
Watchers
104
Open Issues
274
Contributors
105
所有者種別
Organization
主要言語
Python
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/05

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?