Skip to content

Execute PostgreSQL queries directly within Dify using this simple plugin for seamless database interaction.

Notifications You must be signed in to change notification settings

algolyzer/postgresql-query-dify-plugin

Repository files navigation

PostgreSQL Query Plugin for Dify

A secure and efficient PostgreSQL query tool for Dify that allows you to execute SQL queries directly from your AI applications. This version includes enhanced validation, better error handling, and support for schema discovery queries.

✨ Features

  • Secure Query Execution: Validates queries to block dangerous operations (e.g. DROP, TRUNCATE, GRANT)
  • Extended Query Support: Works with SELECT, INSERT, UPDATE, DELETE, WITH (CTE), SHOW, and EXPLAIN
  • Schema Discovery: Safe access to information_schema and pg_catalog queries
  • Markdown Handling: Cleans queries wrapped in ```sql blocks
  • Error Handling: Clear, detailed error messages for debugging
  • Result Formatting: Returns results in both text and JSON formats, with previews for schema queries
  • Connection Management: Efficient connection pooling and automatic rollback for SELECT queries
  • Configurable Fetch Size: Control the number of rows returned

🛠 Installation

  1. Clone or download this plugin repository

  2. Build the plugin package:

    dify plugin package
  3. Install the generated .difypkg file in Dify Plugin Marketplace

  4. Configure your PostgreSQL database credentials

⚙️ Configuration

When setting up the plugin, you'll need to provide:

  • Database Host: PostgreSQL server address
  • Database Port: PostgreSQL port (default: 5432)
  • Database Name: Database to connect to
  • Database User: Username for authentication
  • Database Password: Password for authentication

🚀 Usage

The plugin provides one tool: Execute Query

Parameters:

  • query (required): SQL query to execute
  • fetch_size (optional): Max rows to return for SELECT queries (default: 100)

Example Queries:

-- Simple select
SELECT * FROM users LIMIT 5;

-- Insert with RETURNING
INSERT INTO logs (message, level) VALUES ('Started', 'INFO') RETURNING id;

-- Update records
UPDATE users SET last_login = NOW() WHERE id = 123;

-- Delete expired sessions
DELETE FROM sessions WHERE expires_at < NOW();

-- Schema discovery
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'users';

-- With clause (CTE)
WITH active_users AS (
  SELECT * FROM users WHERE is_active = TRUE
)
SELECT * FROM active_users;

✅ Security Considerations

  • Dangerous operations (DROP, TRUNCATE, GRANT, etc.) are blocked
  • Only single safe statements are executed (no stacked queries)
  • Schema inspection

About

Execute PostgreSQL queries directly within Dify using this simple plugin for seamless database interaction.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages