Skip to main content

jotabase

Python client for jotaBase: sync, query and update your jotaBase databases from servers, scripts, notebooks and desktop apps.

  • Read and write a database with a secret key (servers and scripts) or a publishable key and a signed-in user (apps, where access rules apply).
  • Keep a copy on disk that later syncs bring up to date, downloading only what changed.
  • Query it with SQL through DuckDB, one table per collection, with results as pandas or Polars tables.
  • React to changes as they happen.
pip install jotabase                      # read, write, local copy, live changes
pip install "jotabase[sql,pandas]"        # plus SQL with DuckDB, and pandas

Python 3.10 or newer.

Quick start

import jotabase

db = jotabase.connect("my-app", key="sk_live_...")   # your database's secret key

# Write
db.put("tasks", {"title": "Write the report", "points": 3}, id="t1")
results = db.put_many("measurements", batch)        # split under the 1 MB request limit
for r in results.failed:                            # refused by an access rule
    print(r.id, r.error)
db.delete("tasks", "t1")

# Read everything, or only what changed since last time
changes = db.fetch_changes()
docs = changes.latest()                             # newest version of each, no deleted ones
later = db.fetch_changes(since=changes.checkpoint)

# Keep a copy in ./.jotabase/my-app/ and read it with no server
db.pull()
tasks = db.local().documents("tasks")

# SQL over the copy (pip install "jotabase[sql]")
df = db.sql("SELECT status, count(*) AS n FROM tasks GROUP BY status").df()   # pandas
pl = db.sql("SELECT * FROM tasks WHERE points > ?", [3]).pl()                 # Polars

# React to changes as they happen (a background thread)
@db.on_change
def changed(change):
    for doc in change.docs:
        print(doc["id"], doc["data"])

Keys and users

You connect with Who it is for Access rules
key="sk_..." (secret) servers, scripts, scheduled jobs bypassed
key="pk_..." (publishable), then db.sign_in(email, password) apps and desktop apps applied to the user's roles
no key, jotabase.connect("@handle/name") someone's public database read-only, no live changes

Never ship a secret key inside an app that runs on someone else's machine. Keys are created in the dashboard at app.jotabase.com.

Desktop app

The jotaBase dashboard in a window of its own, with SQL on this computer's DuckDB and each database's copy kept on disk -- queries over a million rows answer in milliseconds.

pip install "jotabase[app]"
jotabase-app

Sign in with your app.jotabase.com account. Copies live in ~/.local/share/jotabase/app/databases/; everything still syncs with the cloud.

Errors

A refused request raises jotabase.JotabaseError with .status (401/403 means the key or the login, anything else is worth a retry) and .code. A document an access rule refuses does not raise: it comes back in results.failed with the reason, while the rest of the batch is written.

Metadata

Release files for jotabase 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jotabase 0.8.0
File Size Uploaded Provenance Actions
jotabase-0.8.0.tar.gz 325.5 kB With provenance Details for jotabase-0.8.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for jotabase 0.8.0
File Interpreter ABI Platform Actions
jotabase-0.8.0-py3-none-any.whl Python 3 none any Details for jotabase-0.8.0-py3-none-any.whl

Total release size: 638.4 kB

Release files / jotabase-0.8.0.tar.gz

Download URL jotabase-0.8.0.tar.gz
Size 325.5 kB
Tags Source
SHA-256 checksum
How to use checksums
12a24faf307741ca0af501107d3e42ee7c06cc30d31522bf0af81df02b12dcd3
BLAKE2b-256 checksum
How to use checksums
a567c1d00066420e5c1d290c65a82ba1ff23d6aa6451d9366adb8066dbf143c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.

Transparency log

Release files / jotabase-0.8.0-py3-none-any.whl

Download URL jotabase-0.8.0-py3-none-any.whl
Size 312.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f7b7f5b562f54c2ad943e8155ccd73c2ca6c65118cfc6f564ea2ba0e76fbd7c0
BLAKE2b-256 checksum
How to use checksums
f65464c86cc6e7e22912eab2bfdb7c262aab69c8333948cca013391b7742255a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.

Transparency log

Security for jotabase 0.8.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for jotabase-0.8.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files Full provenance

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