feat(tools): Add query_postgres tool for read-only natural language queries to PostgreSQL #135
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR introduces a new tool,
query_postgres
, that enables Strands Agents to run read-only SQL queries (SELECT, WITH/CTE) against a PostgreSQL database using natural language.Key highlights:
PGHOST
,PGPORT
,PGDATABASE
,PGUSER
,PGPASSWORD
) for secure credential managementpsycopg2-binary
under[project.optional-dependencies.query_postgres]
Related Issues
Closes #154
Documentation PR
N/A (README updates included in this PR)
Type of Change
Testing
Tool was tested using:
hatch fmt --linter
✅hatch fmt --formatter
✅hatch test --all
✅All tests passed successfully including:
test_missing_env_vars
test_disallowed_query
test_read_only_select
(with mocked connection)Checklist
I have read the CONTRIBUTING document
I have added tests that prove my fix is effective or my feature works
I have updated the documentation accordingly
I have added an appropriate example to the documentation to outline the feature
My changes generate no new warnings
Any dependent changes have been merged and published
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.