{"library":"asyncpg","type":"library","category":null,"description":"High-performance async PostgreSQL driver for Python/asyncio. Implements PostgreSQL binary protocol natively — ~5x faster than psycopg3 in benchmarks. Current version: 0.31.0 (Nov 2025). Still pre-1.0. NOT DB-API 2.0 compliant — uses $1/$2 placeholders not %s. No dict row support out of the box — returns Record objects. Major footgun: prepared statements break with pgbouncer in transaction/statement mode (Supabase, Neon poolers).","language":"python","status":"active","version":"0.31.0","tags":["asyncpg","postgresql","async","asyncio","python","database","fastapi"],"last_verified":"Tue Jun 09","install":[{"cmd":"pip install asyncpg","imports":["import asyncpg\nimport asyncio\n\nasync def main():\n    conn = await asyncpg.connect(\n        'postgresql://user:pass@localhost/mydb'\n    )\n    # $1, $2 placeholders — NOT %s\n    row = await conn.fetchrow(\n        'SELECT id, name FROM users WHERE id = $1',\n        42\n    )\n    print(row['name'])  # Record supports dict-style access\n    await conn.close()\n\nasyncio.run(main())","import asyncpg\nimport asyncio\n\nasync def main():\n    pool = await asyncpg.create_pool(\n        'postgresql://user:pass@localhost/mydb',\n        min_size=2,\n        max_size=10\n    )\n    async with pool.acquire() as conn:\n        rows = await conn.fetch('SELECT * FROM users')\n        for row in rows:\n            print(dict(row))  # convert Record to dict\n    await pool.close()\n\nasyncio.run(main())"]}],"homepage":null,"github":"https://github.com/MagicStack/asyncpg","docs":null,"changelog":null,"pypi":"https://pypi.org/project/asyncpg/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"compatibility":{"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.8,"avg_import_s":0.29,"wheel_type":"wheel"},"url":"https://checklist.day/v1/registry/asyncpg/compatibility"}}