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.26.0-cp38-abi3-win_amd64.whl (11.9 MB view details)

Uploaded CPython 3.8+Windows x86-64

dbcrust-0.26.0-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.26.0-cp38-abi3-musllinux_1_2_aarch64.whl (15.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

dbcrust-0.26.0-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.26.0-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.26.0-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.26.0-cp38-abi3-macosx_11_0_arm64.whl (12.2 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

dbcrust-0.26.0-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.26.0-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: dbcrust-0.26.0-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.26.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e439b8a043909e2813e1d1f24787d03191ebf34ba03cec05edf9436aedcf99b2
MD5 9aec6de1f22fe8602584ae3a7568a942
BLAKE2b-256 56070feb9cca777828526b2fe6f1225081f6d8965cff80e4c4beb9b0f28d4911

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.26.0-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.26.0-cp38-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for dbcrust-0.26.0-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2fbbae462444eef7311c961e4d1e650fe0a0509f16b27ce9bf02dfcb02c57100
MD5 45357c6a9d1ba56c70ccbb5911f90993
BLAKE2b-256 632add5ff34260a6e4e4d6d34387f786a5ab08806f9d6c4a1ba26edaa1f55ea3

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.26.0-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.26.0-cp38-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for dbcrust-0.26.0-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8079e804518c58e7891e6cc4f5c95c1c042f5a64a0b431d88f207ab3e7084045
MD5 a068e956ab6fa5ac33a2aeea988261c1
BLAKE2b-256 f64947b8a33b96f27e0da70bfae530de97794c6518161d1b42a74c2b07d8be4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.26.0-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.26.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dbcrust-0.26.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dcbeb5be19adb97d88d049924ab5892fd4edf8d43e1622f37db1e259a4434748
MD5 e18441a7a63d8af2f43122670de5547f
BLAKE2b-256 fb43a4e3f571dcbd170f577a79cab6f503a20d1a896ce185e92618ac7918dc1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.26.0-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.26.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dbcrust-0.26.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0f2e4330cc3e70aa102a55dbbb31bbd07f5ea0df7880e8f51509f78dfcf9a18e
MD5 2696ecd9bc823a034e446e63fa917958
BLAKE2b-256 ab3678a99abdb90c5b3d4882c2952ae5395512594a286950f2f9347ed1ea399a

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.26.0-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.26.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dbcrust-0.26.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 04dadaa0a9550cf153427c3758aed276921fd8b5d07afe0e27c682f1971e980b
MD5 18c0d3f4a999d9870b47e68a9d5f0260
BLAKE2b-256 f689d4691c657b111c07cf08c57f2fd7d6d0bb22083578585b679eb6b301eead

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.26.0-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.26.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dbcrust-0.26.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6b54f7bf2a35dd23183670e065b61a8b8ac146576a8ae3258b361a544edb823a
MD5 768ea09e5f049b63d914cdab8467daee
BLAKE2b-256 8ecd0c112d1dfd4a64dbf75d3e38db737431b28250b3347c42b3ba22870496c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbcrust-0.26.0-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.26.0-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dbcrust-0.26.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 52ed5c4953fe2fb59e4d348a05549cb49473d747f42b066c538c7c04e8403b3c
MD5 846c73692297179bc6c96872ab49268d
BLAKE2b-256 9d30c19c9d6f96f687f082d10e3c8a001666d9a0dd6153ce8b12c1eb9393bbe0

See more details on using hashes here.

Provenance

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