Skip to main content

AI-powered CLI for natural language database queries and automated test data generation

Project description

QueryNL - Natural Language Database Queries from the Terminal

Query your databases using plain English. No SQL required.

Python 3.10+ License

Features

  • Natural Language Queries: Ask questions in plain English, get SQL results
  • AI-Powered: Uses OpenAI GPT-4 or Anthropic Claude for intelligent query generation
  • Multi-Database: PostgreSQL, MySQL, SQLite, MongoDB support
  • Schema Design: Design database schemas through conversation
  • Test Data Generation: Automatically populate tables with realistic data
  • Interactive REPL: Tab completion, history, and context-aware queries
  • Secure: Credentials stored in OS keychain, SSL/TLS by default
  • Safe: Preview SQL before execution, confirmations for destructive operations

Installation

From PyPI (Coming Soon)

pip install querynl-cli

From Source

pip install git+https://github.com/yourusername/QueryNL.git

Prerequisites

  • Python 3.10 or higher
  • OpenAI or Anthropic API key (for AI features)

Quick Start

1. Configure LLM Provider

# Using OpenAI
querynl config llm --provider openai --test

# Or using Anthropic Claude
querynl config llm --provider anthropic --test

2. Add a Database Connection

querynl connect add mydb
# Follow the interactive prompts

3. Start Querying

querynl repl

querynl (mydb)> show me all users created this month
querynl (mydb)> count orders by status
querynl (mydb)> find top 10 products by revenue

Usage Examples

Natural Language Queries

# In REPL mode
querynl repl

querynl> show me all active users
querynl> count orders grouped by status
querynl> find products with price > 100
querynl> update user email where id = 5

Schema Design

Create database schemas through natural language conversation:

querynl> \schema design
Schema Designer> I need a blog with users, posts, and comments
Schema Designer> posts should have titles and content
Schema Designer> users can comment on posts
Schema Designer> finalize

# Execute the generated schema
querynl> \schema execute

Test Data Generation

Populate your tables with realistic test data:

querynl> add sample data
querynl> add 100 users and 500 posts
querynl> add e-commerce product data

Command-Line Mode

# Execute a single query
querynl query exec "count all users"

# Output as JSON
querynl query exec --format json "all active users"

# Save to file
querynl query exec --output data.csv --format csv "all orders"

# Preview SQL without executing
querynl query exec --explain "delete old records"

Key Features

🤖 AI-Powered Query Generation

  • Understands context and database schema
  • Generates optimized SQL queries
  • Supports complex joins, aggregations, and subqueries
  • Confidence scoring for query accuracy

🔒 Security First

  • Credentials stored in OS keychain (macOS, Windows, Linux)
  • SSL/TLS enabled by default
  • Preview SQL before execution
  • Confirmation prompts for destructive operations (DELETE, DROP, etc.)
  • No credentials in config files or logs

🎨 Beautiful Terminal UI

  • Syntax-highlighted SQL
  • Formatted table output
  • Progress bars for long operations
  • Tab completion for commands and tables
  • Persistent command history

🌐 Multi-Database Support

  • PostgreSQL - Full support
  • MySQL - Full support
  • SQLite - Full support
  • MongoDB - Basic support

📊 Schema Design & Test Data

  • Design schemas through natural language
  • Generate DDL for any database
  • View ER diagrams in terminal
  • Populate tables with realistic test data
  • Respects foreign keys and constraints

Configuration

Config File Locations

  • macOS: ~/Library/Application Support/querynl/config.yaml
  • Linux: ~/.config/querynl/config.yaml
  • Windows: %APPDATA%\querynl\config.yaml

Environment Variables

Variable Description
QUERYNL_CONNECTION_STRING Database connection string
QUERYNL_KEYRING_PASSWORD Master password for headless servers
QUERYNL_CONFIG Custom config file path
QUERYNL_NO_COLOR Disable color output

REPL Commands

Command Description
\help Show available commands
\tables List all tables in database
\schema Display database schema
\schema design Start schema design mode
\schema execute Execute generated DDL
\history Show query history
\clear Clear screen
exit or \quit Exit REPL

Examples

E-commerce Analytics

querynl> show top 10 customers by total order value
querynl> count orders by status for last month
querynl> find products with low inventory

User Management

querynl> show users who signed up this week
querynl> count active users by region
querynl> find users with no recent activity

Data Cleanup

querynl> delete records older than 90 days from logs
querynl> update email domain from old.com to new.com
querynl> remove duplicate entries from customers

Troubleshooting

Connection Issues

# Test your connection
querynl connect test mydb

# List all connections
querynl connect list

# Remove and re-add connection
querynl connect remove mydb
querynl connect add mydb

Keychain Access (macOS)

If you get "Permission denied to access keychain":

  1. Open Keychain Access app
  2. Search for "querynl"
  3. Right-click → Get Info → Access Control
  4. Add Terminal/iTerm to allowed applications

Headless Servers (Linux)

# Use encrypted file keyring
export QUERYNL_KEYRING_PASSWORD="your-master-password"
querynl connect add mydb

Documentation

Support

License

MIT License - see LICENSE file for details

Acknowledgments

Built with:


Made with ❤️ for developers who prefer English over SQL

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

querynl_cli-0.2.7.tar.gz (337.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

querynl_cli-0.2.7-py3-none-any.whl (133.6 kB view details)

Uploaded Python 3

File details

Details for the file querynl_cli-0.2.7.tar.gz.

File metadata

  • Download URL: querynl_cli-0.2.7.tar.gz
  • Upload date:
  • Size: 337.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for querynl_cli-0.2.7.tar.gz
Algorithm Hash digest
SHA256 96910405cade4bf6593ad97fd2720ec1c5f1408168561ab2145ede46d89023dd
MD5 570cd38ceb30ab74ed53b3126d3fe384
BLAKE2b-256 1dad8c198149e77ceec9da875ea14765942532aa4f2161fccffb02430ffa391f

See more details on using hashes here.

File details

Details for the file querynl_cli-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: querynl_cli-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 133.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for querynl_cli-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 11f0fc1a1cc7d50baae3076a5eea910f1e358e8528c5ff401f8b9ac1c1215bfa
MD5 a62a5a4958df64615b7e7fcb477e0e63
BLAKE2b-256 ff2b490f24617c21a308e133e32acf49642a0a80ea7c0c89b77b0589177e136d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page