v2.0.0
重大变更 (Breaking Changes)¶
v2.0.0 是一个完全重构的版本,与 v1 版本不兼容。主要变更包括:
1. 架构重构¶
- 分离 Engine 和 AsMysql 类
- 新增
Engine类:独立的 MySQL 连接引擎,可单独使用 AsMysql类:业务逻辑开发基类,通过client属性访问Engine- 这种设计使得连接管理和业务逻辑完全分离
2. Result 类变更¶
- 错误属性重命名
Result.err→Result.error- 更符合 Python 命名规范
3. API 变更¶
- 连接方式变更
- v1: 继承
AsMysql后自动连接 -
v2: 需要显式创建
Engine并调用connect() -
执行方式变更
- v1: AsMysql
self.client.execute(...) - v2: AsMysql
self.client.execute(...)(保持不变,但client现在是Engine实例)
新功能 (New Features)¶
1. Engine 类¶
全新的连接引擎类,提供以下功能:
-
URL 连接字符串支持
-
连接状态监控
-
灵活的连接管理
- 支持
async with上下文管理器 - 支持
await engine()语法 -
支持
await engine语法 -
连接池配置
min_pool_size: 最小连接数max_pool_size: 最大连接数pool_recycle: 空闲连接回收时间connect_timeout: 连接超时时间
2. Result 类增强¶
- 错误信息访问
error_no: 获取 MySQL 错误码error_msg: 获取 MySQL 错误信息-
error: 获取完整的错误异常对象 -
流式查询支持
-
上下文管理器支持
-
异步迭代器支持
-
自定义结果类型
3. 执行方法增强¶
- execute() 方法
- 支持
stream参数:启用流式查询 - 支持
result_class参数:指定返回结果类型 - 支持
commit参数:控制事务提交 -
支持多种调用方式:
result = await engine.execute(...)async with engine.execute(...) as result:async for item in engine.execute(...):
-
execute_many() 方法
- 批量执行 SQL 语句
- 支持相同的参数选项
4. 类型提示¶
- 完整的类型提示支持
- 支持泛型类型(
Result[T]) - IDE 友好的代码补全
5. 测试¶
- 新增 pytest 测试套件
- 覆盖主要功能场景
- 支持 Mock 测试
更新 (Updates)¶
1. 包管理工具¶
- 使用
uv作为包管理工具 - 更快的依赖安装速度
- 更好的依赖解析
2. 代码质量¶
- 改进代码结构
- 更好的错误处理
- 更清晰的文档字符串
核心特性 (Features)¶
v2 版本保留了 v1 版本的核心特性:
- 简易使用
- asmysql 是对 aiomysql 封装的简易使用库
-
提供更友好的 API
-
连接池管理
- 自动管理 MySQL 连接池
- 支持重连机制
-
连接池状态监控
-
错误处理
- 全局自动捕获
MysqlError错误 - 提供错误码和错误信息访问
-
优雅的错误处理机制
-
执行与获取分离
- 执行 SQL 语句和获取结果分离
- 支持多种数据获取方式
-
灵活的结果处理
-
类型提示
- 完整的 Python 类型提示
- IDE 友好的代码补全
-
类型安全
-
业务逻辑开发
- 直接继承
AsMysql类进行逻辑开发 - 清晰的代码组织
- 易于测试和维护