SQLThunder
What is it ?
SQLThunder is a fast, flexible SQL client for Python designed for real-world workloads across PostgreSQL, MySQL, and SQLite. It offers a cleaner, high-level API over SQLAlchemy, with support for multi-threaded operations, flexible result formats, YAML-based configuration, and a built-in CLI.
The best thing about SQLThunder: no boilerplate code !
Table of Contents
Features
- Threaded execution for fast inserts, updates, and deletes — designed for large-scale data workflows
- Declarative inserts with automatic SQL generation from dictionaries or DataFrames
- Key-based pagination and chunked queries for scalable data extraction
- Flexible result formats: return data as
pandas.DataFrame, list of rows, or raw SQLAlchemy objects - Graceful error handling with optional success flags and failure DataFrames
- YAML-based configuration for clean, environment-agnostic connection setup
- Built-in CLI for quick querying, inserting, and executing SQL without writing code
- Full test coverage including unit tests, integration tests, and Dockerized database backends
- Minimal boilerplate — write less code and get more done
Installation
pip install sqlthunder
Example Usage
from SQLThunder import DBClient
client = DBClient("config.yaml")
df = client.query("SELECT * FROM trades WHERE symbol = 'AAPL')
import pandas as pd
from SQLThunder import DBClient
df = pd.read_excel("data.xlsx")
client = DBClient("config.yaml")
failed_rows, success_flag = client.insert_batch(df, "my_schema.my_table", on_duplicate="ignore", return_status=True)
from SQLThunder import DBClient
client = DBClient("config.yaml")
client.execute(
"""
CREATE TABLE IF NOT EXISTS trades (
id INT PRIMARY KEY,
symbol VARCHAR(10) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
trade_time DATETIME DEFAULT CURRENT_TIMESTAMP
)
"""
)
CLI Usage
# Run a query
sqlthunder query "SELECT * FROM trades" -c config.yaml --print
# Insert from file
sqlthunder insert data.xlsx schema.table -c config.yaml
# Run DDL or DML
sqlthunder execute "DELETE FROM logs" -c config.yaml
Documentation
https://sqlthunder.readthedocs.io
Contributing
See CONTRIBUTE.txt to get started. PRs and feedback are welcome!
License
MIT — see LICENSE for details.
Metadata
Release files for SQLThunder 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sqlthunder-1.0.3.tar.gz | 32.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sqlthunder-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 68.7 kB
Release files / sqlthunder-1.0.3.tar.gz
| Download URL | sqlthunder-1.0.3.tar.gz |
|---|---|
| Size | 32.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f04708b9c473500dd92ba82434e017da8abd78c78400fd75db9597dbf7d9d2af
|
|
BLAKE2b-256 checksum How to use checksums |
f8e8904b2af98bf40005246eb141c9220baa097726b863ed26fe86ba56ad6307
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.13
|
Release files / sqlthunder-1.0.3-py3-none-any.whl
| Download URL | sqlthunder-1.0.3-py3-none-any.whl |
|---|---|
| Size | 36.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
29449fe833c6f1102814dcfcc9e557bf53a368f6be610ba07231801c6614f232
|
|
BLAKE2b-256 checksum How to use checksums |
b91147a5df9531ea5af22a7539d1510b686472430e06019a084e19f688a730e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.13
|