数据库
在多个 PostgreSQL…
需要连接一个或多个 PostgreSQL 数据库做只读 SELECT/EXPLAIN、查看表/Schema 或数据分析时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在多个 PostgreSQL 数据库中安特定
解决思路
- 确保 Python 3.8+。
- 安装 psycopg2-binary:执行 `pip install -r requirements.txt`。
- 在技能目录或 `~/.config/claude/postgres-connections.json` 创建 `connections.json`。
- 因文件包含凭据,设置文件权限:执行 `chmod 600 connections.json`。
- 按示例填写 JSON:使用 `databases` 数组,每项包含连接信息。
- 配置 `name` 字段:必填,数据库标识符(大小写不敏感)。
- 配置 `description` 字段:必填,说明该数据库包含什么数据,用于自动选择。
- 配置 `host` 字段:必填,数据库主机名。
- 配置 `port` 字段:可选,端口号,默认 5432。
- 配置 `database` 字段:必填,数据库名。
- 配置 `user` 字段:必填,用户名。
- 配置 `password` 字段:必填,密码。
- 配置 `sslmode` 字段:可选,SSL 模式:disable、allow、prefer(默认)、require、verify-ca、verify-full。
- 列出已配置数据库:`python3 scripts/query.py --list`。
- 查询数据库:`python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"`。
- 列出表:`python3 scripts/query.py --db production --tables`。
- 显示 schema:`python3 scripts/query.py --db production --schema`。
- 限制结果:`python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100`。
- 将用户问题匹配数据库 `description`:用户问 users/accounts 时,查找 description 包含 users、accounts、customers。
- 将用户问题匹配数据库 `description`:用户问 orders/sales 时,查找 description 包含 orders、transactions、sales。
- 将用户问题匹配数据库 `description`:用户问 analytics/metrics 时,查找 description 包含 analytics、metrics、reports。
- 将用户问题匹配数据库 `description`:用户问 logs/events 时,查找 description 包含 logs、events、audit。
- 如果不明确,运行 `--list` 并询问用户选择哪个数据库。
- 启用只读会话:连接使用 PostgreSQL `readonly=True` 模式(主要保护)。
- 进行查询验证:只允许 SELECT、SHOW、EXPLAIN、WITH 查询。
- 拒绝单次多语句:每次查询中的多个语句会被拒绝。
- 支持 SSL:可通过配置 `sslmode` 使用加密连接。
- 强制查询超时:执行 30 秒语句超时。
- 限制内存:每次查询最多 10,000 行,防止 OOM。
- 限制列宽:每列最多 100 字符,保证输出可读。
- 清理凭据:错误消息不泄露密码。
- Config not found:在技能目录创建 `connections.json`。
- Authentication failed:检查配置中的用户名/密码。
- Connection timeout:验证 host/port,检查防火墙/VPN。
- SSL error:本地数据库尝试 `"sslmode": "disable"`。
- Permission warning:运行 `chmod 600 connections.json`。
- 退出码 0:表示成功。
- 退出码 1:表示错误(配置缺失、认证失败、无效查询、数据库错误)。
- 工作流第 1 步:运行 `--list` 显示可用数据库。
- 工作流第 2 步:将用户意图匹配到数据库 description。
- 工作流第 3 步:运行 `--tables` 或 `--schema` 探索结构。
- 工作流第 4 步:执行带适当 LIMIT 的查询。
适用边界 · 注意事项
- 需要写入或修改数据库(INSERT、UPDATE、DELETE、DROP 等)时不要使用;此技能会阻止所有写操作。
- 未配置 `connections.json`、未准备只读账号、网络/VPN 不可达或 SSL 配置不正确时不要使用;先完成配置和故障排除。
- 需要一次执行多条语句、单次查询超过 30 秒、或需要返回超过 10,000 行时不要使用;会被拒绝、超时或受行数限制。