skillfed

asyncmy

The fastest asyncio MySQL/MariaDB driver for Python

asyncmy v0.2.14 895.2K downloads/30d#4,790 on PyPI386
Permissive license Apache-2.0 Active released

What it is and what it does

asyncmy is an asyncio MySQL/MariaDB driver that optimizes the protocol layer for speed while keeping the aiomysql API surface familiar. It supports both text and binary (server-side prepared statement) protocols, built-in connection pooling, and replication stream reading. The core optimization is bulk packet parsing—rows are decoded directly from the receive buffer without intermediate Python objects, and numeric/temporal columns parse natively from wire bytes.

Typical use is either single-connection queries via `asyncmy.connect()` or high-concurrency workloads via `asyncmy.create_pool()`. The binary protocol is opt-in (via `conn.prepare()` or transparent mode with `stmt_cache_size`), offering another ~35% speedup for repeated queries by eliminating client-side escaping and text parsing. Type stubs are included for mypy/Pylance integration.

Use it for:

  • High-throughput async web services (FastAPI, Starlette) needing fast pooled MySQL/MariaDB access without blocking.
  • Bulk data pipelines reading large result sets where the 2.1x speedup over mysqlclient matters.
  • Applications using rotating credentials (e.g., AWS RDS IAM tokens) via the password_creator callback.
  • ORM-backed services that benefit from transparent prepared-statement caching without code changes.
  • Real-time analytics or replication monitoring via the BinLogStream replication protocol support.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

asyncmy is an asyncio-native MySQL/MariaDB driver providing fast asynchronous database access with an aiomysql-compatible API, built on an optimized protocol core.

Yes, if you need async MySQL/MariaDB access and can tolerate medium install friction (compiled extensions). The performance gains are substantial and well-benchmarked, the API is familiar to aiomysql users, and the maintenance signal is strong (active repo, recent release, no vulnerabilities). Windows users should factor in the C++ Build Tools prerequisite. Not necessary if you're using synchronous-only code or already satisfied with aiomysql's throughput.

Install

asyncmy on PyPI

pip

pip install asyncmy

uv

uv add asyncmy

poetry

poetry add asyncmy

Installing asyncmy

Before you install

Medium install friction due to compiled extensions. Prebuilt wheels available for Python 3.10–3.12 across common platforms (macOS, Linux, Windows), but Windows users must install Microsoft C++ Build Tools before pip install. Repository is actively maintained with recent release (2 days old) and no known vulnerabilities.

License in practice

Licensed under Apache-2.0 (permissive), allowing commercial and private use with minimal restrictions—suitable for most production deployments.

Quickstart

import asyncio
import asyncmy

async def main():
    conn = await asyncmy.connect(host="localhost", user="root", password="")
    async with conn.cursor() as cursor:
        await cursor.execute("SELECT 1")
        result = await cursor.fetchone()
    await conn.ensure_closed()

asyncio.run(main())

Requires Python ≥3.9. On Windows, Microsoft C++ Build Tools must be installed before pip install to compile extensions.

Verify before relying

  • Whether the stated performance improvements (2.1x faster than mysqlclient, 5x faster than aiomysql) hold for typical workloads outside the benchmark suite.
  • Compatibility and performance impact of the transparent prepared-statement cache mode with different ORMs.
  • Whether rotating credentials via password_creator work reliably across all pool reconnection scenarios.

Package facts

License Apache-2.0 (permissive)
Python support supports the current Python release (>=3.9)
Install friction medium — platform-specific wheel
Runtime dependencies none
Maintenance actively maintained — 2 days since the last release
Last repo commit
First released
Downloads 895,220/month — #4,790 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: asyncmy-0.2.14-cp310-cp310-macosx_10_9_x86_64.whl; asyncmy-0.2.14-cp310-cp310-macosx_11_0_arm64.whl; asyncmy-0.2.14-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; asyncmy-0.2.14-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; asyncmy-0.2.14-cp310-cp310-musllinux_1_2_aarch64.whl; asyncmy-0.2.14-cp310-cp310-musllinux_1_2_x86_64.whl; asyncmy-0.2.14-cp310-cp310-win32.whl; asyncmy-0.2.14-cp310-cp310-win_amd64.whl; asyncmy-0.2.14-cp311-cp311-macosx_10_9_x86_64.whl; asyncmy-0.2.14-cp311-cp311-macosx_11_0_arm64.whl; asyncmy-0.2.14-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; asyncmy-0.2.14-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; asyncmy-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl; asyncmy-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl; asyncmy-0.2.14-cp311-cp311-win32.whl; asyncmy-0.2.14-cp311-cp311-win_amd64.whl; asyncmy-0.2.14-cp312-cp312-macosx_10_13_x86_64.whl; asyncmy-0.2.14-cp312-cp312-macosx_11_0_arm64.whl; asyncmy-0.2.14-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; asyncmy-0.2.14-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Keywords: driver, asyncio, mysql

Programming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.9

Tags

asyncio mysql driverasync mariadb clientfast async databaseaiomysql alternativeasync sql connection poolbinary protocol mysqlasyncio database adapter
asynciomysql-driverperformance-optimized

More Database packages