Skip to content

DBCrust

Connect to PostgreSQL, MySQL, SQLite, ClickHouse, MongoDB, Elasticsearch — or query Parquet, CSV, and JSON files with SQL.

6 databases

PostgreSQL · MySQL · SQLite · ClickHouse · MongoDB · Elasticsearch

File formats

Parquet · CSV · JSON — query with SQL via Apache DataFusion

Smart CLI

Autocompletion · syntax highlighting · EXPLAIN visualizer · 50+ commands

Desktop GUI

Tauri app — CodeMirror editor · schema explorer · Docker panel · multi-tab

Security

SSH tunneling · HashiCorp Vault · encrypted password storage

Python & Django

Library API · Django middleware · N+1 query detection

Terminal window
dbcrust postgres://user:pass@localhost/mydb # PostgreSQL
dbcrust mysql://root:pass@localhost:3306/app # MySQL
dbcrust sqlite:///data/app.db # SQLite
dbcrust clickhouse://user:pass@localhost:8123/db # ClickHouse
dbcrust mongodb://user:pass@localhost:27017/app # MongoDB
dbcrust elasticsearch://localhost:9200 # Elasticsearch
dbcrust parquet:///data/sales.parquet # Parquet
dbcrust csv:///logs/*.csv?header=true # CSV with globs
dbcrust json:///events.json # JSON / NDJSON
dbcrust docker://my-postgres # Docker container
dbcrust session://production_db # Saved session
dbcrust vault://readonly@database/postgres-prod # Vault credentials
\dt -- list tables
\d users -- describe table
\e -- toggle EXPLAIN mode
\ev -- interactive EXPLAIN TUI
\cs -- column selection for wide results
\ns --global daily SELECT * FROM orders WHERE created_at >= current_date - interval '$1 days'
daily 7 -- run named query with parameter

A Tauri-based app with CodeMirror SQL editor, schema explorer, Docker discovery, EXPLAIN viewer, and multi-tab interface.

Terminal window
mise install && mise run gui:dev

Learn more →

import dbcrust
result = dbcrust.run_command("postgres://…/mydb", "SELECT count(*) FROM users")
from dbcrust.django import analyzer
with analyzer.analyze() as a:
for book in Book.objects.all():
print(book.author.name) # N+1 detected

Python API → · Django integration →