Skip to main content

Embedded SQL OLAP engine for Python — query Parquet, CSV, JSON, Arrow, Avro, Excel, and SQLite files directly with SQL, in-process. Zero server, no import step.

Project description

SlothDB

Run analytics faster.

SlothDB is an embedded SQL database that runs everywhere: on your laptop, on a server, and in the browser. Built from scratch as a DuckDB alternative. Up to 5x faster on real workloads (138 ms vs 540 ms on a 5-query warm JOIN batch; 5.43x peak on Avro SUM; 16-query suite median 1.70x). Built-in readers for Parquet, CSV, JSON, Avro, Arrow, Excel, and SQLite.

Join the SlothDB Discord

PyPI Downloads Downloads/month Python versions CI License PeerPush

SlothDB 60-second demo


Try it in 60 seconds

pip install slothdb
python -c "import slothdb; slothdb.demo()"

Generates a 100 000-row CSV, runs three queries, and prints the side-by-side with DuckDB shown above. No files to find, no setup.

Using your own files

import slothdb
db = slothdb.connect()
df = db.sql("SELECT region, SUM(revenue) FROM 'sales.parquet' GROUP BY region").fetchdf()

No server. No import step. No CREATE TABLE. Point SQL at files on disk.

Why SlothDB?

Same embedded model as DuckDB and SQLite — link it into your process, point SQL at files. Different defaults:

  • 7 file formats built in — Parquet, CSV, JSON, Avro, Arrow, SQLite, Excel. DuckDB needs extensions for Avro and SQLite.
  • 1.1–8.6× faster than DuckDB on a 1M-row benchmark across 15 queries. JSON parse is 8.6×, Avro SUM is 5.4×, CSV COUNT(*) is 5.1×. Full numbers on GitHub →
  • Stable C ABI — extensions don't break across releases.
  • ~8 MB single binary, fully self-contained.

Quickstart

import slothdb

# In-memory
db = slothdb.connect()

# Query files directly
db.sql("SELECT * FROM 'data.csv' WHERE score > 90").show()
db.sql("SELECT COUNT(*) FROM 'logs.parquet'").show()
db.sql("SELECT * FROM read_json('events.json') LIMIT 5").show()
db.sql("SELECT * FROM sqlite_scan('app.db', 'users')").show()

# Persistent database
db = slothdb.connect("analytics.slothdb")

# DataFrame integration
df = db.sql("SELECT region, SUM(revenue) FROM 'sales.csv' GROUP BY region").fetchdf()

What's not production-ready yet

  • No multi-writer transactions (single-writer, crash-safe checkpoint).
  • No distributed execution — single-node embedded engine.
  • Some SQL corners still surprise you (open an issue).
  • v0.1.5, ~6 months old. Treat as beta.

Performance

Format Query SlothDB DuckDB Speedup
Parquet COUNT(*) 12 ms 34 ms 2.83×
CSV COUNT(*) 33 ms 170 ms 5.08×
CSV GROUP BY region 100 ms 191 ms 1.91×
JSON SUM(revenue) 242 ms 314 ms 1.30×
Avro SUM(revenue) 140 ms 760 ms 5.43×
Avro GROUP BY region 170 ms 800 ms 4.71×

1M-row dataset, warm cache, 5-run median. Full 15-query table + methodology →

Community

There's a Discord: discord.gg/XJWyGmX5G. Bug reports, install help, weird query plans, "is this slower than it should be", feature ideas - any of it. The maintainer reads everything. GitHub issues are still the canonical tracker; the server is for the questions that come before you file one.

Links

License

MIT

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

slothdb-0.2.4.tar.gz (13.0 kB view details)

Uploaded Source

Built Distributions

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

slothdb-0.2.4-py3-none-win_amd64.whl (822.7 kB view details)

Uploaded Python 3Windows x86-64

slothdb-0.2.4-py3-none-manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded Python 3

slothdb-0.2.4-py3-none-macosx_11_0_universal2.whl (1.8 MB view details)

Uploaded Python 3macOS 11.0+ universal2 (ARM64, x86-64)

File details

Details for the file slothdb-0.2.4.tar.gz.

File metadata

  • Download URL: slothdb-0.2.4.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for slothdb-0.2.4.tar.gz
Algorithm Hash digest
SHA256 81cefeaf19f77e9eaed5330fbc84264b175db1db0c10cfbc627929efcd603b19
MD5 191a3bf62f8ecfe4901a45908c4b9321
BLAKE2b-256 01d436de1fb7cf3012ffc2142dfb20517c45cab7094af5f526e37e9a737fd096

See more details on using hashes here.

File details

Details for the file slothdb-0.2.4-py3-none-win_amd64.whl.

File metadata

  • Download URL: slothdb-0.2.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 822.7 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for slothdb-0.2.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c529e7ce7d3614b59286f9a51eb6c2a393113b43305f6c13b767c28ad4b14e09
MD5 37e1b0e22733326a9f2fc8859818c7fd
BLAKE2b-256 48357fe9cd3468bfc51610dd0330770400cb1eb4d55ef3c141840f039c274475

See more details on using hashes here.

File details

Details for the file slothdb-0.2.4-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for slothdb-0.2.4-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 536d351354c70957b159e8dccb280b4945e18a885ed64f275ad25806b40d4099
MD5 c2c5f4f0bf4dc93568e847979a21deb2
BLAKE2b-256 6d41eb90f8b27cdf3d802f5b4155299c0cd908a56e8f996f07f4ca439005add1

See more details on using hashes here.

File details

Details for the file slothdb-0.2.4-py3-none-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for slothdb-0.2.4-py3-none-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 4cfd07d5ad2058b2523b27676ade789236e95eecd2a7c128f1ef6bf4076e81f8
MD5 570b80cb636b194bb3ea7f6a6ec31741
BLAKE2b-256 31bbf55329a1c28270a85980fc3acc56cf60211ce71bfd7184d3bfe5f42c0210

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