sql-dhost is a Python utility that integrates SQL database querying with powerful LLMs (like OpenAI, Claude, and Perplexity) to enable natural language to SQL query conversion. It's particularly useful for users who want to interact with databases using plain English.
- 🔌 Easy connection to PostgreSQL databases
- 🤖 Convert natural language questions into SQL using OpenAI, Claude, or Perplexity
- 🧠 Schema-aware LLM prompts
- 🔍 Execute queries and retrieve results programmatically
- ⚙️ Modular design for easy extension
Clone the repository and install dependencies:
git clone https://github.com/sujanMidatani7/sql-dhost.git
cd sql-dhost
pip install uv
uv init
uv venv
uv add -r requirements.txt
OR
uv add sql-dhost #or pip install sql-dhost
from sql_dhost import PSQLUtil
# PostgreSQL connection string
conn_str = "db_connection_string"
# Initialize PSQLUtil with API keys
psql = PSQLUtil(
db_connection=conn_str,
openai_api_key="your-openai-key",
claude_api_key="your-claude-key",
perplexity_api_key="your-perplexity-key"
)
Before generating queries, provide your database schema:
schema = """
Table: users
Columns: id, name, email
Table: orders
Columns: id, user_id, amount, date
"""
psql.set_schema(schema)
query = "SELECT * FROM users WHERE id = %s"
results = psql.execute_query(query, params=(1,))
print(results)
response = psql.generate_sql_query(
question="List all users who placed an order above $1000",
provider="openai",
llm="gpt-4o",
max_tokens=500
)
print(response['sql'])
for output in psql.generate_sql_query_and_execute(
question="Get all users who made orders in January",
provider="claude",
llm="claude-3-opus"
):
print(output)
To run test scripts:
python test.py
Ensure your .env
or connection config is properly set up before testing.
Initializes the utility with DB and optional LLM API keys.
Sets the database schema and updates system prompt for the LLM.
Executes a SQL query and returns results.
Manually update the LLM system prompt.
Retrieves the current system prompt.
Returns SQL and explanation generated by selected LLM.
Generates SQL using LLM and streams execution results.
Pull requests are welcome. For major changes, open an issue first to discuss.
MIT License. See LICENSE for details.