Skip to main content

PicoVolt for Python

Python bindings for the PicoVolt embedded database engine, via its C ABI and ctypes. Pure Python: no compiler is needed on the Python side, only the prebuilt shared library.

Like the engine itself, this is for embedded use (single writer, SQL with MVCC time-travel, compile-to-.pvdb), not a drop-in for a concurrent server's primary database.

Install

Platform wheels bundle the native library, so released builds install without a Rust compiler:

python -m pip install picovolt

Build the shared library from the repository root:

cargo build --release --features capi

That produces target/release/libpicovolt.so (Linux), target/release/libpicovolt.dylib (macOS), or target/release/picovolt.dll (Windows). When you run from a checkout, the wrapper finds it in target/release automatically. Otherwise set PICOVOLT_LIB to the file:

export PICOVOLT_LIB=/path/to/libpicovolt.so

Usage

from picovolt import Database

with Database.open_memory() as db:
    db.query("CREATE TABLE users (id, name)")
    db.query("INSERT INTO users VALUES (1, 'alice')")
    print(db.query("SELECT * FROM users"))
    # {'columns': ['id', 'name'], 'rows': [[1, 'alice']]}

query returns the already-parsed result (a dict): {"columns": [...], "rows": [[...]]} for a SELECT, {"mutated": n} for a mutation, or {"done": True} otherwise. Other methods: open_dev, open_prod, from_bytes, export, begin, commit, rollback, in_transaction, current_tx, and the module-level version(). A PEP 249 adapter is available as picovolt.dbapi2.

For SQL executed repeatedly, prepare it once. The wrapper caches the SQL text and positional-parameter count, validates arity before each execution, and passes values through the same injection-safe binder as query:

with db.prepare("INSERT INTO users VALUES (?, ?)") as insert:
    print(insert.parameter_count)  # 2
    insert.execute((1, "Ada"))
    insert.execute((2, "Lin"))

Preparation validates SQL and retains a native statement handle. Close the statement (or use its context manager) before closing the database. A statement does not own or close its database, and executing it after either handle has been closed raises PicoVoltError.

Run the demo:

python example.py

Release wheels are built for Linux, macOS, and Windows by GitHub Actions. Source checkouts can instead use PICOVOLT_LIB to select a locally built library.

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.

picovolt-1.7.0-py3-none-win_amd64.whl (532.5 kB view details)

Uploaded Python 3Windows x86-64

picovolt-1.7.0-py3-none-manylinux_2_28_x86_64.whl (708.9 kB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

picovolt-1.7.0-py3-none-macosx_10_9_universal2.whl (592.9 kB view details)

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

File details

Details for the file picovolt-1.7.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: picovolt-1.7.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 532.5 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for picovolt-1.7.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 db5d71c3b88dd45c347c8302ec943515ca47b6bf4b2e1026ce21fb0015a0d1e0
MD5 41856be4c9f3c1851c129cc67ff93357
BLAKE2b-256 22bd70255a492dbe1226a6b1f620fefc6deca574a2c855ac227654403be8abbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for picovolt-1.7.0-py3-none-win_amd64.whl:

Publisher: python-wheels.yml on MiniJe/picovolt

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

File details

Details for the file picovolt-1.7.0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for picovolt-1.7.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6ea32f5618768688b98c5ba8116a14bdc535824c08b38916975cc0fb218301ee
MD5 48c34c766ab604b13eabce696c8888ee
BLAKE2b-256 dcdc282f68015f1254aebe99efd18f2b6e9ef9123cc5f8c8e208cb6565b19539

See more details on using hashes here.

Provenance

The following attestation bundles were made for picovolt-1.7.0-py3-none-manylinux_2_28_x86_64.whl:

Publisher: python-wheels.yml on MiniJe/picovolt

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

File details

Details for the file picovolt-1.7.0-py3-none-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for picovolt-1.7.0-py3-none-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b640294c1d5a005f81d690dd40f48d982f902ed3c98fe76b407850ec8d96c5f0
MD5 3bdd185393226c4bb6bad24e17d1f2d5
BLAKE2b-256 2012f95206690d077044690b76c4026ee8ddc2ef7ff3ffcd6b1f9a304ec7c20a

See more details on using hashes here.

Provenance

The following attestation bundles were made for picovolt-1.7.0-py3-none-macosx_10_9_universal2.whl:

Publisher: python-wheels.yml on MiniJe/picovolt

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

Release history Release notifications | RSS feed

1.8.1

3 files

1.8.0

3 files

1.7.1

3 files

This release

1.7.0 This release

3 files

1.6.0

3 files

1.5.0

3 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page