Skip to main content

Shoveler: A minimal desktop SQL workbench for DuckDB

Project description

DuckDB Workbench

A minimal desktop SQL workbench for DuckDB, built with Python and PySide6.

Setup (uv)

git clone https://github.com/mrmatho/shoveler
cd shoveler
uv sync

uv sync creates a .venv, installs all dependencies including the dev group, and respects uv.lock if it exists. Run it again after pulling changes.

Running

uv run python -m shoveler

Testing

uv run pytest

Managing dependencies

uv add somepackage              # add a runtime dependency
uv add --dev somepackage        # add to the dev group (not published to PyPI)
uv remove somepackage           # remove a dependency
uv lock                         # regenerate uv.lock without installing
uv sync                         # install from uv.lock

Commit uv.lock to the repository. It pins exact versions for reproducible installs.

Usage

  • Open File — connect to an existing .duckdb or .db file (green indicator)
  • New In-Memory — scratch database; data is lost when closed (amber indicator)
  • File > Save Database As... — save current database state to a .duckdb file
  • Checkpoint — flush the write-ahead log to disk (file databases only)
  • F5 or Ctrl+Enter — run query
  • Select part of your SQL to run only that selection
  • Double-click a table name in the schema panel to insert it into the editor
  • View > Syntax highlighting — toggle SQL highlighting on or off; enabled by default and remembered between launches

Building a standalone Windows executable

The project includes shoveler.spec with the correct PyInstaller configuration. Use this rather than running pyinstaller with flags directly — the spec handles a non-obvious issue with DuckDB's compiled extension.

uv run pyinstaller shoveler.spec

Output is in dist/Shoveler/. Distribute that folder as a zip.

Why --onedir and not --onefile? --onefile extracts everything to a temp directory on every launch, which makes startup noticeably slow for a PySide6 app. --onedir is faster and easier to debug if something goes wrong.

Known PyInstaller issue with DuckDB: DuckDB's compiled core (_duckdb.pyd on Windows) lives outside the duckdb/ package directory. PyInstaller does not find it automatically. The spec file uses collect_all('duckdb') which handles this correctly. If you ever regenerate the spec from scratch, make sure this is included or the packaged app will fail to start.

Extending

Feature Where to add it
More export formats Add menu items in ResultsPanel._show_export_menu() — raw data is in _last_rows / _last_columns

Project details


Download files

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

Source Distribution

shoveler-0.1.0.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

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

shoveler-0.1.0-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file shoveler-0.1.0.tar.gz.

File metadata

  • Download URL: shoveler-0.1.0.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for shoveler-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fd1905d7040a61907d291dacbad9d6d02811279a757de2ae6e721c2371843a69
MD5 765e4007e2ae49a65fa6443da9339404
BLAKE2b-256 947f2dbaaf632aaa1fb524ab7a14aff4129037582d5d0422e81ffa2c89fa7964

See more details on using hashes here.

File details

Details for the file shoveler-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: shoveler-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for shoveler-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bca70b4abab59887c7db23b1221769148d34f64e8e9e20bd21da86c7743283b2
MD5 485cf8931b0cce5fcbe77aaf8fe4fe0a
BLAKE2b-256 781238c6db911e9e0758c682a066e34bb4352bd6305ebc8057592541c8fbf0fa

See more details on using hashes here.

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