用途:当你需要查询 PostgreSQL 且访问必须严格保持只读时使用,也可用于浏览多个已配置连接下的模式、表和数据,并提供多层防护以避免误执行 INSERT/UPDATE/DELETE 或 DDL。
环境要求:Python 3.8+,以及 psycopg2-binary,通过 pip install -r requirements.txt 安装。
配置:在技能目录或 ~/.config/claude/postgres-connections.json 创建 connections.json,内含 databases 数组,每项字段包括 name、description、host、database、user、password(均必填),port、sslmode 可选(port 默认 5432,sslmode 可选 disable、allow、prefer 默认、require、verify-ca、verify-full)。因含凭据,应设置权限:chmod 600 connections.json。
使用方式:列出已配置数据库 python3 scripts/query.py --list;查询 python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10";列出表 --tables;查看模式 --schema;限制结果可加 --limit 100。选择数据库时可依据描述的用途匹配用户意图,不明确时先运行 --list 再询问用户。
安全特性:连接使用 PostgreSQL readonly=True 模式作为主要防护;仅允许 SELECT、SHOW、EXPLAIN、WITH 查询;拒绝多语句;支持可配置 SSL;强制 30 秒语句超时;单次查询最多 10000 行以防内存溢出;列宽上限 100 字符;错误信息不泄露密码。
退出码:0 成功,1 错误(配置缺失、认证失败、查询无效、数据库错误等)。
限制:只读保护可减少误写,但无法覆盖数据库服务器策略、触发器、扩展或权限过高的账号,应以只读权限的数据库角色作为主要控制。查询结果可能包含个人、机密或受监管数据,需确认目标数据库并在获得明确授权前避免导出或分享结果。该脚本不能替代备份、审计、访问审查或生产变更控制。