skills/skills.netease.im/mysql-assistant

mysql-assistant

SKILL.md

MySQL 数据库助手

快速开始

首次配置

# 1. 复制配置模板
cp config/databases.env.example config/databases.env

# 2. 编辑填入实际数据库信息
# 单数据库:
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=your_database

# 多数据库(加前缀):
DB1_HOST=localhost  DB1_NAME=db_one
DB2_HOST=remote    DB2_NAME=db_two

# 3. 安装依赖
pip3 install mysql-connector-python

同步表结构

python3 scripts/sync_schema.py            # 同步所有数据库
python3 scripts/sync_schema.py --db DB1  # 只同步 DB1

同步后,references/schemas/{db_name}.md 文件将包含完整的表结构、字段说明、索引、外键信息。


使用模式

模式 A:解释字段关系(使用本地 schema 文件)

  1. 读取 references/schemas/ 下对应数据库的 Markdown 文件
  2. 基于字段名、类型、外键关系进行分析和解释
  3. 用自然语言描述表之间的关联关系

示例用户请求

  • "解释 orders 表和 users 表之间的关系"
  • "user_id 这个字段是外键吗,关联到哪张表"
  • "这个数据库有哪些核心表"

模式 B:生成 SQL 语句(使用本地 schema 文件)

  1. 读取 references/schemas/ 获取表结构上下文
  2. 根据用户意图生成准确的 SQL
  3. 附上字段说明,解释 SQL 逻辑

示例用户请求

  • "查询最近 7 天新注册的用户数量"
  • "给 products 表添加一个 stock_count INT 字段"
  • "查询每个用户的订单总金额,按金额降序"
  • "创建 category 和 product 之间的关联索引"

SQL 生成规范

  • SELECT 语句:加 LIMIT 防止全表扫描
  • ALTER TABLE:使用 ADD COLUMN IF NOT EXISTS(MySQL 8.0+)或先检查再执行
  • 时间查询:使用索引友好的范围条件 created_at >= NOW() - INTERVAL 7 DAY
  • JOIN:明确写出 JOIN 类型,优先 INNER JOIN

模式 C:生成 ER 图(Mermaid 格式)

# 从本地同步文件生成(推荐)
python3 scripts/generate_er.py

# 指定数据库
python3 scripts/generate_er.py --db skillmarket

# 输出到文件
python3 scripts/generate_er.py --output er.md

# 直接连接数据库生成(不需要先同步)
python3 scripts/generate_er.py --live --db DB1

输出 Mermaid erDiagram 格式,可粘贴到 GitHub/Notion/Typora 等支持 Mermaid 的工具中渲染。

模式 D:直接查询数据库

# 基本查询
python3 scripts/query_db.py --db skillmarket "SELECT COUNT(*) FROM users"

# 查看所有配置的数据库
python3 scripts/query_db.py --list

# 格式化输出
python3 scripts/query_db.py --db DB1 --format json "SELECT * FROM users LIMIT 5"
python3 scripts/query_db.py --db DB1 --format csv "SELECT id, name FROM products"

# 从文件执行 SQL
python3 scripts/query_db.py --db DB1 --file query.sql

# 执行写操作(需要 --write 参数)
python3 scripts/query_db.py --db DB1 --write "INSERT INTO logs(msg) VALUES('test')"

安全说明:默认只允许 SELECT/SHOW/DESCRIBE/EXPLAIN 等只读语句。执行 DDL/DML 需显式加 --write 参数。


Schema 文件说明

references/schemas/{db_name}.md 结构:

# {db_name} 数据库表结构
> 同步时间: 2026-03-20 10:00:00
> 共 N 张表

## 目录
- [表名1](#表名1)
- [表名2](#表名2)

---

## 表名1
**说明**: 表注释

### 字段
| 字段名 | 类型 | 可空 | 键 | 默认值 | 额外 | 注释 |

### 索引
| 索引名 | 类型 | 字段 |

### 外键
| 约束名 | 本表字段 | 关联表 | 关联字段 |

如果 schema 文件不存在,提示用户先运行 python3 scripts/sync_schema.py


常见问题

连接失败:检查 config/databases.env 中的 HOST/PORT/USER/PASSWORD,确认 MySQL 服务正在运行且网络可达。

schema 文件为空:该数据库可能没有表,或同步时连接失败,重新运行 sync_schema.py 查看错误信息。

生成的 SQL 需要调整:告知具体需求,AI 会基于最新的 schema 重新生成。

Installs
1
First Seen
Apr 8, 2026