Database Operations Plugin
Execute database operations on various database systems.
Description
This plugin enables executing SQL queries and commands on different database systems including PostgreSQL, MySQL, SQLite, and Oracle. It supports parameterized queries, transactions, and returns results in structured format.
Configuration
Required Parameters
connection_string(string): Database connection stringquery(string): SQL query to executeaction(string): Operation type -execute,fetchone,fetchall
Optional Parameters
parameters(object|array): Query parameters for parameterized queriescommit(boolean): Whether to commit the transaction (default: true for execute actions)timeout(integer): Query timeout in seconds
Examples
Execute INSERT Query (PostgreSQL)
- name: insert_user
plugin: database_operations
parameters:
connection_string: "postgresql://user:password@localhost:5432/mydb"
query: "INSERT INTO users (name, email) VALUES (%s, %s)"
action: "execute"
parameters:
- "John Doe"
- "john@example.com"
commit: true
Execute SELECT Query with Fetch All (MySQL)
- name: get_all_users
plugin: database_operations
parameters:
connection_string: "mysql://user:password@localhost:3306/mydb"
query: "SELECT * FROM users WHERE active = %s"
action: "fetchall"
parameters:
- true
Execute SELECT Query with Fetch One (SQLite)
- name: get_user_count
plugin: database_operations
parameters:
connection_string: "sqlite:///path/to/database.db"
query: "SELECT COUNT(*) as user_count FROM users"
action: "fetchone"
Execute UPDATE Query with Parameters
- name: update_user_email
plugin: database_operations
parameters:
connection_string: "postgresql://user:password@localhost:5432/mydb"
query: "UPDATE users SET email = %s WHERE id = %s"
action: "execute"
parameters:
- "newemail@example.com"
- 123
commit: true
Execute Transaction with Multiple Queries
- name: transfer_funds
plugin: database_operations
parameters:
connection_string: "mysql://user:password@localhost:3306/bank"
query: |
UPDATE accounts SET balance = balance - %s WHERE id = %s;
UPDATE accounts SET balance = balance + %s WHERE id = %s;
action: "execute"
parameters:
- 100.00
- 1
- 100.00
- 2
commit: true
Return Values
Execute Action (INSERT/UPDATE/DELETE)
{
"status": "success",
"action": "execute",
"query": "INSERT INTO users (name, email) VALUES (%s, %s)",
"row_count": 1,
"message": "Query executed successfully"
}
FetchOne Action
{
"status": "success",
"action": "fetchone",
"query": "SELECT * FROM users WHERE id = %s",
"result": {
"id": 123,
"name": "John Doe",
"email": "john@example.com",
"created_at": "2023-01-01 00:00:00"
}
}
FetchAll Action
{
"status": "success",
"action": "fetchall",
"query": "SELECT * FROM users WHERE active = %s",
"results": [
{
"id": 123,
"name": "John Doe",
"email": "john@example.com"
},
{
"id": 124,
"name": "Jane Smith",
"email": "jane@example.com"
}
],
"row_count": 2
}
Troubleshooting
Common Errors
Connection failed: Unable to connect to database- Verify connection string format and credentials
- Check if database server is running and accessible
-
Ensure network connectivity and firewall rules
-
Authentication failed: Invalid username or password - Verify database credentials
- Check if user has necessary permissions
-
Ensure user is not locked or expired
-
Syntax error in query: Invalid SQL syntax - Validate SQL query syntax
- Check for missing semicolons or typos
-
Verify table and column names exist
-
Table does not exist: Referenced table not found - Verify database schema and table names
- Check if using correct database
-
Ensure migrations have been applied
-
Timeout: Query execution timed out - Increase timeout parameter for long-running queries
- Check database performance and indexes
-
Optimize query for better performance
-
Transaction conflict: Transaction-related issues - Ensure proper transaction handling
- Check for deadlocks or lock timeouts
- Use appropriate isolation levels
Connection String Formats
- PostgreSQL:
postgresql://username:password@host:port/database - MySQL:
mysql://username:password@host:port/database - SQLite:
sqlite:///path/to/database.db - Oracle:
oracle://username:password@host:port/database
Best Practices
- Always use parameterized queries to prevent SQL injection
- Handle database connections properly and close them after use
- Use transactions for multiple related operations
- Implement proper error handling and logging
- Use connection pooling for frequent database operations
- Validate and sanitize all user inputs
- Use appropriate indexes for better query performance
Security Considerations
- Never embed database credentials in code
- Use environment variables or secret managers for connection strings
- Implement least privilege principle for database users
- Regularly rotate database passwords
- Encrypt sensitive data in database
- Audit database access and queries