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.
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":
- Open Keychain Access app
- Search for "querynl"
- Right-click → Get Info → Access Control
- 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
- 🐛 Report Issues
- 💬 Discussions
- 📧 Email: support@querynl.com
License
MIT License - see LICENSE file for details
Acknowledgments
Built with:
- Click - CLI framework
- Rich - Terminal formatting
- LangChain - LLM orchestration
- SQLAlchemy - Database toolkit
- Faker - Test data generation
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96910405cade4bf6593ad97fd2720ec1c5f1408168561ab2145ede46d89023dd
|
|
| MD5 |
570cd38ceb30ab74ed53b3126d3fe384
|
|
| BLAKE2b-256 |
1dad8c198149e77ceec9da875ea14765942532aa4f2161fccffb02430ffa391f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11f0fc1a1cc7d50baae3076a5eea910f1e358e8528c5ff401f8b9ac1c1215bfa
|
|
| MD5 |
a62a5a4958df64615b7e7fcb477e0e63
|
|
| BLAKE2b-256 |
ff2b490f24617c21a308e133e32acf49642a0a80ea7c0c89b77b0589177e136d
|