Skip to main content

private-db-llm

Generate and execute SQL queries against MySQL or PostgreSQL using a Large Language Model (LLM)

Features

  • Schema Extraction
    Automatically discovers tables, columns, and foreign-key relations.
  • LLM-powered Query Generation
    Sends your prompt plus the database schema to an LLM and returns a syntactically valid SQL query.
  • Multi-Provider Support
    Works with OpenAI (v1+), OpenRouter, and Ollama HTTP APIs.
  • Multi-Database Support
    Out of the box, supports MySQL and PostgreSQL (via mysql-connector-python & psycopg2-binary).
  • SOLID Architecture
    Clean separation of concerns, easy to extend to other databases or LLM providers.

Installation

pip install private-db-llm

Optional extras:

  • If you need PostgreSQL support, also install
pip install psycopg2-binary
  • To load credentials from a .env file, you can add
pip install python-dotenv 

Quick Start

1. Configure Your LLM

from private_db_llm.config import LLMConfig

llm_conf = LLMConfig(
    provider="openai",      # "openai", "openrouter", or "ollama"
    api_key="sk-…",
    base_url=None,          # for OpenRouter or Ollama HTTP endpoint
    model="gpt-4o-mini"
)

2. Create the Service

from private_db_llm.service import create_service

service = create_service(llm_conf)

3. Connect to Your Database

MySQL

import mysql.connector

mysql_conn = mysql.connector.connect(
    host="localhost",
    port=3306,
    user="root",
    password="your_mysql_password",
    database="your_mysql_db"
)

PostgreSQL

import psycopg2

postgres_conn = psycopg2.connect(
    host="localhost",
    port=5432,
    user="postgres_user",
    password="your_pg_password",
    dbname="your_pg_db"
)

4. Run a Prompt & Get JSON Results

# For MySQL
result_mysql = service.run(
    mysql_conn,
    "List all users who signed up in the last 7 days"
)
print(result_mysql)

# For PostgreSQL
result_pg = service.run(
    postgres_conn,
    "Show total sales per region for Q1"
)
print(result_pg)

Advanced

  • Customizing the instruction template:

    • Pass your own instruction_template to DBLLMService if you want to tweak how the LLM is prompted.
  • Adding a new database:

    1. Create <YourDB>SchemaExtractor & <YourDB>QueryExecutor classes.
    2. Hook them into service.run() based on the connection type.
    • Supporting another LLM provider:
    1. Subclass the LLMClient ABC.
    2. Add your implementation in llm_client.py.
    3. Register it in create_service().

Version Compatibility

  • Python: >=3.12
  • OpenAI Python SDK: >=1.0.0
  • MySQL driver: mysql-connector-python>=8.0.0
  • HTTP client: httpx>=0.23.0
  • PostgreSQL driver: psycopg2-binary>=2.9.0

Contributing

  1. Fork the repo
  2. Create a feature branch
  3. Write tests & update docs
  4. Open a PR — all contributions welcome!

License

MIT © Matin Khosravi

Metadata

Release files for private-db-llm 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for private-db-llm 0.1.1
File Size Uploaded
private_db_llm-0.1.1.tar.gz 8.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for private-db-llm 0.1.1
File Interpreter ABI Platform
private_db_llm-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.0 kB

Release files / private_db_llm-0.1.1.tar.gz

Download URL private_db_llm-0.1.1.tar.gz
Size 8.9 kB
Tags Source
SHA-256 checksum
How to use checksums
cbe495e9a1c513fde64ac797c9d271d4b89ffcaadf80e42767d555b35a4d8cce
BLAKE2b-256 checksum
How to use checksums
55baa281424ff190350b2ea3ff55003dc28328a35d0469d6cc26e9d29c56567b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release files / private_db_llm-0.1.1-py3-none-any.whl

Download URL private_db_llm-0.1.1-py3-none-any.whl
Size 10.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e8a1b7da48843ee1ffcdba761224d24b296f8620307e6d552e10e8c04bee27f
BLAKE2b-256 checksum
How to use checksums
df4d3ebcf32e6f3a14f5b1fa30d238a6b7310c31c10f580dd336682e5f2f813d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page