Skip to content
数据分析4 ModulespymysqlPython 3v0.1.0

ADB MySQL

阿里云 AnalyticDB 只读数据分析

连接阿里云 AnalyticDB for MySQL 实例(或 DMS 代理),提供只读数据分析能力。多 Profile 管理、SQL 安全拦截、交叉验证、Schema 文档自动生成。仅依赖 pymysql。

ADB MySQL
添加连接
$./adb config add prod --host dms.aliyuncs.com --user id --password *** --database mydb --test
OK Connection: prod (mydb@dms.aliyuncs.com) — OK
$./adb query "SELECT COUNT(*) FROM orders"
count: 12,847
$./adb analyze -t orders -g status -a "SUM(amount)"
paid ¥ 1,284,500
pending ¥ 89,200
refunded ¥ 32,100
OK Cross-validation passed (3 checks)
$./adb schema mydb
OK Generated 24 table docs → ~/.adb-mysql/schema/mydb/

核心能力

多 Profile 管理

支持多个 ADB 实例(或 DMS 代理)配置。一键切换 Profile,凭据加密存储在 ~/.adb-mysql/profiles.json(权限 0600)。

只读安全

正则拦截所有写入操作(INSERT/UPDATE/DELETE/DROP 等),自动添加 LIMIT 200,检测 SELECT * 和缺少 WHERE 的危险查询。

交叉验证

每次分析自动执行多维验证:总行数校验、随机样本抽查、数值统计比对、时间范围确认。确保数据分析结论可信。

Schema 文档生成

为所有表自动生成 Markdown 文档(字段定义、索引、ADB 分布键、示例查询),Agent 首次分析前读取作为上下文。

多格式输出

查询结果支持 table / csv / json 三种输出格式,直接对接 Agent 后续处理或导出到文件。

DMS 代理兼容

同时支持直连 ADB 实例和通过阿里云 DMS 代理连接,使用 pymysql 纯 Python 驱动,无需本地 MySQL 客户端。

命令参考

配置管理 (config)

多 Profile 连接配置与切换

命令说明示例
add添加连接 Profile./adb config add prod --host xxx --user id --password secret --database mydb --test
list列出所有 Profile./adb config list
use切换默认 Profile./adb config use staging
test测试连接./adb config test prod
remove删除 Profile./adb config remove old-prod

SQL 查询 (query)

只读查询,自动限制 200 条

命令说明示例
直接查询内联 SQL./adb query "SELECT * FROM users LIMIT 10"
-d指定数据库./adb query -d mydb "SELECT COUNT(*) FROM orders"
-f从文件读取 SQL./adb query -f report.sql --format csv
-p指定 Profile./adb query -p staging "SELECT 1"
--format输出格式./adb query "SELECT 1" --format json

数据分析 (analyze)

多维分析 + 交叉验证

命令说明示例
-c计数分析./adb analyze -t orders -c
-g + -a聚合分析./adb analyze -t orders -g status -a "SUM(amount)"
--time-col时间序列分析./adb analyze -t orders --time-col created_at --start-date 2024-01-01

Schema 文档 (schema)

自动生成 Markdown 表结构文档

命令说明示例
默认输出生成到 ~/.adb-mysql/schema/./adb schema mydb
-o自定义输出目录./adb schema mydb -o ./docs/schema

使用场景

首次接入 — 配置连接

对 Agent 说"连接我的 ADB 实例",Agent 引导完成 Profile 配置并验证连接:

> "帮我连接 ADB 数据库 mydb"

Agent 执行:
1. ./adb config add prod --host xxx --user id --password secret --database mydb --test
2. 连接成功后自动运行 ./adb schema mydb 生成表结构文档
3. 后续分析时 Agent 读取 Schema 文档作为上下文

数据分析 — 聚合与趋势

对 Agent 说"分析一下上个月的订单数据",Agent 自动选择合适的分析方式:

> "分析上个月各状态的订单金额"

Agent 执行:
./adb analyze -t orders -g status -a "SUM(amount)" \
  --time-col created_at --start-date 2024-01-01 --end-date 2024-02-01

每次分析自动执行交叉验证,确保结论可信。

数据导出

bash
./adb query -f complex_report.sql --format csv > report.csv

安全策略

策略说明
只读拦截正则检测 INSERT / UPDATE / DELETE / DROP / CREATE / ALTER / TRUNCATE
行数限制自动添加 LIMIT 200,超出自动截断
性能警告检测 SELECT *、缺少 WHEREJOINON 条件
凭据安全配置文件权限 0600,密码不出现在命令行参数

模块架构

adb (Bash CLI 入口)

├── config   → config.py    多 Profile 连接管理 (add/list/use/test/remove)
├── query    → query.py     SQL 只读查询 (table/csv/json 输出)
├── analyze  → analyze.py   多维分析 + 交叉验证
└── schema   → schema.py    Schema 文档生成 (Markdown)

            adb_core.py      核心引擎 (pymysql 连接 + SQL 安全 + 输出格式化)

         ~/.adb-mysql/
           ├── profiles.json  连接配置
           └── schema/        Schema 文档输出

依赖安装

bash
pip install pymysql

仅依赖 pymysql(纯 Python MySQL 驱动),无需本地 mysql 客户端。

快速开始

Install
via skills.sh (推荐)
$npx skills add northseadl/norix-skills/adb-mysql
或手动安装
$git clone https://github.com/northseadl/norix-skills.git
$ln -s norix-skills/adb-mysql <SKILLS_DIR>/adb-mysql
验证
$./adb help
OK Skill ready.

Built for AI Agents, by Norix