Postgres

sanjay3290/ai-skills/skills/postgres

作者 sanjay3290281d88df199357e3091a3be5c743a0fca9a9ae1bApache-2.0收录于 2026年10月9日更新于 2026年10月9日

Execute read-only SQL queries against multiple PostgreSQL databases. Use when: (1) querying PostgreSQL databases, (2) exploring database schemas/tables, (3) running SELECT queries for data analysis, (4) checking database contents. Supports multiple database connections with descriptions for intelligent auto-selection. Blocks all write operations (INSERT, UPDATE, DELETE, DROP, etc.) for safety.

包含脚本Data & Analytics
AI 生成的概览

对已配置的 PostgreSQL 数据库执行只读 SQL 查询,支持结构探索和多库选择。

功能
通过 Python 脚本对一个或多个已配置的 PostgreSQL 数据库执行安全的只读 SQL。它可以列出已配置的连接、列出表、显示结构,并运行带行数限制的 SELECT、SHOW、EXPLAIN 或 WITH 查询。写入操作会被阻止,结果以可读文本输出返回。
适用场景
当你需要查询 PostgreSQL 数据、探索数据库结构或表,或为分析检查数据库内容时使用。它适合在多个数据库之间进行只读调查,并需要根据描述选择正确的连接。
运行要求
需要 Python 3.8+ 以及 requirements.txt 中的 psycopg2-binary 包。需要包含主机、数据库、用户名和密码凭据的 connections.json 文件,并需要访问数据库主机的网络。该技能附带可执行脚本 scripts/query.py。

PostgreSQL Read-Only Query Skill

Execute safe, read-only queries against configured PostgreSQL databases.

Requirements

  • Python 3.8+
  • psycopg2-binary: pip install -r requirements.txt

Setup

Create connections.json in the skill directory or ~/.config/claude/postgres-connections.json.

Security: Set file permissions to 600 since it contains credentials:

bash
chmod 600 connections.json
json
{  "databases": [    {      "name": "production",      "description": "Main app database - users, orders, transactions",      "host": "db.example.com",      "port": 5432,      "database": "app_prod",      "user": "readonly_user",      "password": "your-password",      "sslmode": "require"    }  ]}

Config Fields

FieldRequiredDescription
nameYesIdentifier for the database (case-insensitive)
descriptionYesWhat data this database contains (used for auto-selection)
hostYesDatabase hostname
portNoPort number (default: 5432)
databaseYesDatabase name
userYesUsername
passwordYesPassword
sslmodeNoSSL mode: disable, allow, prefer (default), require, verify-ca, verify-full

Usage

List configured databases

bash
python3 scripts/query.py --list

Query a database

bash
python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"

List tables

bash
python3 scripts/query.py --db production --tables

Show schema

bash
python3 scripts/query.py --db production --schema

Limit results

bash
python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100

Database Selection

Match user intent to database description:

User asks aboutLook for description containing
users, accountsusers, accounts, customers
orders, salesorders, transactions, sales
analytics, metricsanalytics, metrics, reports
logs, eventslogs, events, audit

If unclear, run --list and ask user which database.

Safety Features

  • Read-only session: Connection uses PostgreSQL readonly=True mode (primary protection)
  • Query validation: Only SELECT, SHOW, EXPLAIN, WITH queries allowed
  • Single statement: Multiple statements per query rejected
  • SSL support: Configurable SSL mode for encrypted connections
  • Query timeout: 30-second statement timeout enforced
  • Memory protection: Max 10,000 rows per query to prevent OOM
  • Column width cap: 100 char max per column for readable output
  • Credential sanitization: Error messages don't leak passwords

Troubleshooting

ErrorSolution
Config not foundCreate connections.json in skill directory
Authentication failedCheck username/password in config
Connection timeoutVerify host/port, check firewall/VPN
SSL errorTry "sslmode": "disable" for local databases
Permission warningRun chmod 600 connections.json

Exit Codes

  • 0: Success
  • 1: Error (config missing, auth failed, invalid query, database error)

Workflow

  1. Run --list to show available databases
  2. Match user intent to database description
  3. Run --tables or --schema to explore structure
  4. Execute query with appropriate LIMIT

来源与署名

来源:sanjay3290/ai-skills位于skills/postgres提交281d88d

许可证: Apache-2.0

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架