Skip to main content

Shoveler: A desktop SQL workbench for DuckDB

Project description

Shoveler - A DuckDB Workbench

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

Named after the Australasian shoveler - a species of "dabbling duck" - in honor of both the database's name and the app's purpose.

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

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.1.tar.gz (87.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.1-py3-none-any.whl (77.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shoveler-0.1.1.tar.gz
  • Upload date:
  • Size: 87.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shoveler-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f26c42b28185972a3d47aa108a8fb2a2376a935e9cae9f2bd0b269f0ec1c4513
MD5 b70e9f708eebe3bb0394bbf08023d8cd
BLAKE2b-256 abd443d26c1581ea404902e112821d4f0867fa90bcf264774e5c6da0e762b0f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for shoveler-0.1.1.tar.gz:

Publisher: python-publish.yml on mrmatho/shoveler

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

File details

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

File metadata

  • Download URL: shoveler-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 77.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shoveler-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0f1ea8c176d66b44678ea156cf456351fc4429425bc8e28642c8f5f581d31a1c
MD5 827470a3670cbf0e57a3604a5e2b98ce
BLAKE2b-256 1eada847b9378865911218cd8332daed122bccfe73d94b7e12ffc9cba0efc26d

See more details on using hashes here.

Provenance

The following attestation bundles were made for shoveler-0.1.1-py3-none-any.whl:

Publisher: python-publish.yml on mrmatho/shoveler

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