跳转至

AsMysql

PyPI Python License Downloads Monthly Downloads Weekly Downloads

异步 MySQL 客户端库

  • asmysql 是一个基于 aiomysql 封装的异步 MySQL 客户端库,专为 Python 异步编程设计。
  • v2 版本完全重构了架构,提供了更清晰、更灵活的 API 设计,支持类型提示、连接池管理、错误处理等企业级特性。

🚀 简单易用

直观的 API 设计,学习成本低,快速上手

⚡ 高性能

基于连接池的异步操作,支持高并发场景

🔧 类型安全

完整的类型提示支持,提升开发体验

💾 内存友好

支持流式查询,处理大数据集不占用内存

🔌 灵活扩展

分离引擎和业务逻辑,便于架构设计

🪶 超轻量级

极小的代码体积,无冗余依赖,部署简单

快速开始

安装

pip install asmysql

快速示例

import asyncio
from asmysql import Engine

async def main():
    # 创建引擎
    engine = Engine(
        host='localhost',
        port=3306,
        user='root',
        password='password',
        db='test'
    )

    # 连接数据库
    await engine.connect()

    # 执行查询
    result = await engine.query("SELECT * FROM users WHERE id = %s", (1,))
    user = await result.fetch_one(as_dict=True)
    print(user)

    # 关闭连接
    await engine.close()

asyncio.run(main())

核心特性

v2 版本核心特性

1. 分离式架构

  • Engine:独立的 MySQL 连接引擎,可单独使用
  • AsMysql:业务逻辑开发基类,继承即可使用
  • Result:结果处理类,支持多种数据获取方式

2. 连接管理

  • 自动管理 MySQL 连接池
  • 支持连接池配置(最小/最大连接数)
  • 自动重连机制
  • 连接状态监控

3. 灵活的查询方式

  • 支持普通查询和流式查询
  • 支持单条和批量执行
  • 支持事务控制

4. 多种结果类型

  • tuple:默认元组类型
  • dict:字典类型
  • 自定义模型:支持 Pydantic 等模型类

5. 数据获取方式

  • fetch_one():获取单条记录
  • fetch_many():获取多条记录
  • fetch_all():获取所有记录
  • iterate():异步迭代器,逐行获取
  • 直接迭代:async for item in result

6. 错误处理

  • 全局自动捕获 MysqlError
  • 错误码和错误信息访问
  • 优雅的错误处理机制

7. 上下文管理

  • 支持 async with 语法
  • 自动资源清理
  • 支持异步迭代器协议

8. URL 连接字符串

  • 支持 MySQL URL 格式连接
  • 格式:mysql://user:password@host:port/?charset=utf8mb4

核心概念

Engine(引擎)

Engine 是 MySQL 连接的核心类,负责:

  • 管理连接池
  • 执行 SQL 语句
  • 处理连接生命周期

AsMysql(业务逻辑类)

AsMysql 是业务逻辑开发的基类,提供:

  • client 属性:访问 Engine 实例
  • 业务方法封装
  • 代码组织能力

Result(结果类)

Result 是 SQL 执行结果的封装类,提供:

  • 数据获取方法
  • 错误信息访问
  • 执行统计信息
  • 异步迭代支持

相关链接