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.28.1-cp310-abi3-win_amd64.whl (14.1 MB view details)

Uploaded CPython 3.10+Windows x86-64

dbcrust-0.28.1-cp310-abi3-musllinux_1_2_x86_64.whl (18.3 MB view details)

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

dbcrust-0.28.1-cp310-abi3-musllinux_1_2_aarch64.whl (18.3 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

dbcrust-0.28.1-cp310-abi3-manylinux_2_28_aarch64.whl (18.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

dbcrust-0.28.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.5 MB view details)

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

dbcrust-0.28.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (18.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ i686

dbcrust-0.28.1-cp310-abi3-macosx_11_0_arm64.whl (14.7 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

dbcrust-0.28.1-cp310-abi3-macosx_10_12_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file dbcrust-0.28.1-cp310-abi3-win_amd64.whl.

File metadata

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

File hashes

Hashes for dbcrust-0.28.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e28aa8a0d3c58a160899536f29578990b724d5a4a39bca4accbe600770d664ae
MD5 79252203c971acec25563c81161b7466
BLAKE2b-256 152c17703eedafa9630cc2c35fed3fec50f094c65811e3c66ae5167a0822b537

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.28.1-cp310-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.28.1-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for dbcrust-0.28.1-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2d009a281db2ecdec16683fec7116d47b78bac6cb8dbcc64d793f3942624383b
MD5 237eba27c0a39aa405958363019d8810
BLAKE2b-256 8295c482088238a0387f855baf3717bdaeaf2a92efc39f160dbfb5cfaf4a0a1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.28.1-cp310-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.28.1-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for dbcrust-0.28.1-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3f8f22aad4ad3856b6ff8a8ab96f793253291616cbaa002a9070947b5f098b37
MD5 776bb45bd77e3041ea216ec786e9d944
BLAKE2b-256 7b56198cd777fc1b72e8ed4bd908064a9ad7c7df51458c39fc87912d846a811f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.28.1-cp310-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.28.1-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for dbcrust-0.28.1-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5c058c5343f23beb4fe902a98681ff5a5afac4f15b2e171dd0be7b4518cdd9e9
MD5 9998738f644e68aa408e356fa9c34875
BLAKE2b-256 f5447cd002473a6a664e93613eff730790026ccdcb7157677703b5e63139d856

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.28.1-cp310-abi3-manylinux_2_28_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.28.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dbcrust-0.28.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8301593cd4c690d898f1f940e076ababc7d808b4320550ec3d18fdbfca34d053
MD5 7ae4e9c4ba21f0ae81e6ce8f55ae2af6
BLAKE2b-256 31e74d5aa21d24dbcc19307fd3832a88f34fb963387c242a66f21c432a7675a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.28.1-cp310-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.28.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dbcrust-0.28.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d241a999b1acf516d0ac5071926ff04d655fc4985534c990d777f1d34ce2552d
MD5 5b9d841435925e9aeed8537558eeb780
BLAKE2b-256 276e7e7417e5dc00ef388e7513049f3dde4947473f812e419e9861405c84b408

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.28.1-cp310-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.28.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dbcrust-0.28.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a6b1871c26796a14d906387847bb2abe6424a0206fdf11fb773429908b76ab0
MD5 de559471afe431b1c84847d7c62772bc
BLAKE2b-256 0aeb204266bf848ac243bd297369ac98cb786c2288b5d9f6f9730ac70ee14acb

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.28.1-cp310-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.28.1-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dbcrust-0.28.1-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f2e3e9c5f26c1b6aac06ba184ffcab5c28bf4a052ffeb01dc5735a42e49b97c2
MD5 3a61672f575efa1ef0ec65ec648e74b4
BLAKE2b-256 6711e47746215b2238faae70e71e0c7442acd9d23d753d3515fb13c8058cf1ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.28.1-cp310-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