Skip to main content

High-performance database CLI engineered for Django developers — Advanced ORM analysis, performance optimization, SSH tunneling, and seamless multi-database support (PostgreSQL, MySQL, SQLite)

Project description

DBCrust

A fast, multi-database CLI and desktop app built in Rust. Connect to PostgreSQL, MySQL, SQLite, ClickHouse, MongoDB, and Elasticsearch — or query Parquet, CSV, and JSON files with SQL. Includes SSH tunneling, Vault integration, Docker auto-discovery, and a Tauri-based GUI.

Rust License: MIT Documentation PyPI

Features

Category What you get
Databases PostgreSQL, MySQL, SQLite, ClickHouse, MongoDB, Elasticsearch
File formats Parquet, CSV, JSON — queried with SQL via Apache DataFusion
Smart CLI Context-aware autocompletion, syntax highlighting, history search, external editor
Desktop GUI Tauri app with CodeMirror SQL editor, schema explorer, Docker panel, EXPLAIN viewer
Security SSH tunneling, HashiCorp Vault dynamic credentials, encrypted password storage
DevOps Docker container auto-discovery, saved sessions, recent connections
Performance EXPLAIN visualization (text + interactive TUI), query timing
Django ORM analyzer, N+1 detection, middleware, management commands
Python API dbcrust.run_command(), dbcrust.run_cli(), PostgresClient class

Install

# Pre-built binary (macOS / Linux)
curl -fsSL https://clement-tourriere.github.io/dbcrust/install.sh | sh

# Windows
# irm https://clement-tourriere.github.io/dbcrust/install.ps1 | iex

# Python (via uv)
uv tool install dbcrust        # install globally
uvx dbcrust <connection-url>   # run without installing

# From source
cargo install --path .

Connect

# Relational databases
dbcrust postgres://user:pass@localhost/mydb
dbcrust mysql://root:pass@localhost:3306/mydb
dbcrust sqlite:///path/to/db.sqlite
dbcrust clickhouse://user:pass@localhost:8123/default

# Document databases
dbcrust mongodb://user:pass@localhost:27017/mydb
dbcrust elasticsearch://localhost:9200

# File formats (SQL via DataFusion)
dbcrust parquet:///data/sales.parquet
dbcrust csv:///logs/*.csv?header=true
dbcrust json:///events.json

# Docker auto-discovery
dbcrust docker://                         # interactive picker
dbcrust docker://my-postgres-container    # direct

# Saved sessions & recent connections
dbcrust session://production_db
dbcrust recent://

# Vault dynamic credentials
dbcrust vault://readonly@database/postgres-prod

# SSH tunneling
dbcrust postgres://user@db.internal/app --ssh-tunnel jumphost.com

Both dbcrust and dbc (short alias) are available.

Interactive commands

Once connected you get a REPL with 50+ backslash commands. Highlights:

\dt             list tables               \l        list databases
\d <table>      describe table            \c <db>   switch database
\e              toggle EXPLAIN mode       \ev       EXPLAIN TUI (interactive)
\x              expanded display          \cs       column selection
\ed             open $EDITOR              \w <f>    write last query to file
\i <f>          execute SQL file          \n        list named queries
\ns <n> <sql>   save named query          \ss <n>   save session
\s              list sessions             \r        recent connections
\savepass       save password             \vc       Vault cache status
\docker         list Docker containers    \h        help
\q              quit

Named queries support parameter substitution ($1, $*, $@) and scopes (--global, --postgres, --mysql, --sqlite, or session-local by default).

Desktop GUI

DBCrust includes a Tauri-based desktop application with:

  • SQL editor — CodeMirror with syntax highlighting, Cmd+Enter / Ctrl+Enter to run
  • EXPLAIN viewer — visual query plan display
  • Schema explorer — browse tables, columns, indexes, foreign keys
  • Docker discovery — find and connect to running database containers
  • Session manager — saved connections, recent history
  • Multi-tab — work on multiple queries in parallel
  • Settings — view and toggle configuration
  • System tray — quick access, stays running in background

Run the GUI

# Prerequisites: mise (installs Bun automatically)
mise install

# Development mode (hot-reload)
mise run gui:dev

# Production build (generates .app / .dmg / .msi)
mise run gui:build

Python integration

import dbcrust

# Execute a query
result = dbcrust.run_command("postgres://user:pass@localhost/mydb", "SELECT * FROM users LIMIT 5")

# Launch interactive CLI
dbcrust.run_cli("postgres://user:pass@localhost/mydb")

# Object-oriented client
from dbcrust import PostgresClient
client = PostgresClient(host="localhost", user="postgres", dbname="myapp")
tables = client.list_tables()

Django ORM analyzer

# settings.py — add the middleware
MIDDLEWARE = ['dbcrust.django.PerformanceAnalysisMiddleware', ...]

# Or analyze manually
from dbcrust.django import analyzer
with analyzer.analyze() as analysis:
    for book in Book.objects.all():
        print(book.author.name)  # N+1 detected

results = analysis.get_results()
# Connect using Django database settings
python manage.py dbcrust

Development

DBCrust uses mise for tool management and task running. Mise automatically installs Bun (used for the GUI frontend), commitizen, and other dev tools.

# One-time setup
mise install              # installs Bun, commitizen, pkl, etc.
mise run gui:install      # install GUI npm dependencies via Bun

# CLI
mise run build:dev        # debug build
mise run build            # release build
cargo run -- <url>        # run directly

# GUI
mise run gui:dev          # dev mode with hot-reload
mise run gui:build        # production build

# Python
mise run py:dev           # maturin develop
mise run py:build         # build wheel
mise run py:test          # pytest

# Quality
mise run fmt              # cargo fmt
mise run lint             # clippy
mise run test             # cargo test
mise run check            # fmt + lint + test

Project layout

├── src/                   # Rust CLI + library
│   ├── main.rs            # entry point
│   ├── commands.rs        # backslash command system (enum + strum)
│   ├── database_*.rs      # per-database implementations
│   ├── completion.rs      # SQL autocompletion
│   ├── explain_tui/       # interactive EXPLAIN visualizer (ratatui)
│   └── ...
├── gui/                   # Tauri desktop app
│   ├── src/               # React + TypeScript frontend
│   ├── src-tauri/         # Tauri Rust backend (bridges to dbcrust core)
│   └── package.json       # Bun-managed dependencies
├── python/                # Python bindings (PyO3 + maturin)
├── docs/                  # MkDocs documentation source
├── mise.toml              # task runner & tool config
└── Cargo.toml             # workspace root

Configuration

Config lives in ~/.config/dbcrust/:

config.toml               # settings (limits, display, SSH patterns, Vault, etc.)
named_queries.toml         # saved queries with scopes
recent.toml                # connection history
vault_credentials.enc      # encrypted Vault credential cache
history.txt                # command history

Show current config: \config inside the REPL.

Documentation

License

MIT — see LICENSE.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

dbcrust-0.27.1-cp38-abi3-win_amd64.whl (11.9 MB view details)

Uploaded CPython 3.8+Windows x86-64

dbcrust-0.27.1-cp38-abi3-musllinux_1_2_x86_64.whl (15.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ x86-64

dbcrust-0.27.1-cp38-abi3-musllinux_1_2_aarch64.whl (15.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

dbcrust-0.27.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

dbcrust-0.27.1-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (15.3 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

dbcrust-0.27.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (15.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

dbcrust-0.27.1-cp38-abi3-macosx_11_0_arm64.whl (12.2 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

dbcrust-0.27.1-cp38-abi3-macosx_10_12_x86_64.whl (12.0 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file dbcrust-0.27.1-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: dbcrust-0.27.1-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 11.9 MB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dbcrust-0.27.1-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e41e7af2b2bbec875d758cb1dfb3d6ee727775dfe45f34bdd74bc404026eba2c
MD5 f576f74eea7b603a174a8ec5243816a5
BLAKE2b-256 4b76840fd42657c5736fd9d43bca2f971b1f889b6beaa3157a982675f2b9a457

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.27.1-cp38-abi3-win_amd64.whl:

Publisher: release.yml on clement-tourriere/dbcrust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dbcrust-0.27.1-cp38-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for dbcrust-0.27.1-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1d87a2c2182298c4a923c9a22837532d8832f9a742dc17928f01e6eee8c38625
MD5 4638516dc8e74710e05e537f2568c85f
BLAKE2b-256 776dc056d7bd04fe873dd144228ff572753b65e87f146ee840fd807dfb6ee288

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.27.1-cp38-abi3-musllinux_1_2_x86_64.whl:

Publisher: release.yml on clement-tourriere/dbcrust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dbcrust-0.27.1-cp38-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for dbcrust-0.27.1-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f53ff1bac35494cbe1a977374cca2408b1a82e150f7630eb66b37b35b09a7854
MD5 c2b0b19d141333bc79e0d8adfbf534e9
BLAKE2b-256 36914772867b21f5ae7021c9923c76b40e90c9bc81b58f7531431cc7efa22dae

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.27.1-cp38-abi3-musllinux_1_2_aarch64.whl:

Publisher: release.yml on clement-tourriere/dbcrust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dbcrust-0.27.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dbcrust-0.27.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 662d834c1a26cf46c81af88fc736cf7ec9ff0759295b638b241360539da374e9
MD5 f8167ee3cae5a4a16830d09aa047c81e
BLAKE2b-256 22caf74e7af5b09a97c9c4e4481f1c36b622ce493933c5ea2f4dd927b4288197

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.27.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on clement-tourriere/dbcrust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dbcrust-0.27.1-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dbcrust-0.27.1-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 57edab20305bfbc5b1e34bddf4bebd182bae177a42a6309f1c608eedcd7e3f31
MD5 6727e8cec481703c2a0259f25fd6340b
BLAKE2b-256 c7cb1e8c2dbbcbef2d5c3712c3582513d0ceb4290057530c31d38dbc709f4d21

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.27.1-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on clement-tourriere/dbcrust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dbcrust-0.27.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dbcrust-0.27.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5af917e4f358d0784a925b9f7ab5f7128099c5c1487423fca3cb469a2ba8f36b
MD5 b941966189ee20afa623fd05f882471a
BLAKE2b-256 3c561f4b52e6425d7960b264bb0d607d93bbe3f50ec917e74c1fe6beae210bb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.27.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on clement-tourriere/dbcrust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dbcrust-0.27.1-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dbcrust-0.27.1-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aaca980b55c4bef790911c7f2bd2984c1add54adc29e60471e6b29b5c327fa13
MD5 5cea7c1d9198c7b9189ae5542c0986e2
BLAKE2b-256 95320c76f527734250553a305b78b3c4ba1562fd3b4a23f280d07e72a2676f6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.27.1-cp38-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on clement-tourriere/dbcrust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dbcrust-0.27.1-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dbcrust-0.27.1-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 22c60f52f612a060335e4b1826afa55e5238d609036d4175fd614cfd6026cf1f
MD5 44ebe2f615b10b3c02ef0c2dafd025e7
BLAKE2b-256 e46ec09e85caf3514729a1b10bac93fe0ea08c8df527108bc023dc7c1219451f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.27.1-cp38-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on clement-tourriere/dbcrust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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