Skip to main content

PyPI Version CI Documentation Status

itemdb

The itemdb library allows you to store and retrieve Python dicts in a database on the local filesystem, in an easy, fast, and reliable way.

Based on the rock-solid and ACID compliant SQLite, but with easy and explicit transactions using a with statement. It provides a simple object-based API, with the flexibility to store (JSON-compatible) items with arbitrary fields, and add indices when needed.

Originally developed as part of TimaTagger and MyPaaS.

Installation

pip install itemdb

Quick usage example

import itemdb

# Open the database and make sure there is a table with appopriate indices
db = itemdb.ItemDB(":memory:")
db.ensure_table("persons", "!name", "age")

# Add some items to the db
with db:
    db.put_one("persons", name="Jane", age=22)
    db.put_one("persons", name="John", age=18, fav_number=7)
    db.put("persons", {"name": "Guido"}, {"name": "Anne", "age": 42})

# Update an item
with db:
    db.put_one("persons", name="John", age=19, fav_number=8)

# Query items
db.count_all("persons")  # -> 4
db.select("persons", "age > ?", 20)  # -> list of 2 items

See the guide for details.

Async

The AsyncItemDB class provides the same API, but async:

import itemdb

db = await itemdb.AsyncItemDB(":memory:")
await db.ensure_table("persons", "!name", "age")

async with db:
    await db.put_one("persons", name="Jane", age=22)

...

Alternatively, a decorator is provided to turn a normal function into an async one (running in a separate thread).

@asycify
def your_db_interaction_logic(...):
    db = ItemDB(filename)
    ...

async def your_async_code(...):
    await your_db_interaction_logic(...)

License

MIT

Developers

  • Run ruff format to autoformat.
  • Run ruff check to lint.
  • Run pytest tests to run unit tests.

Metadata

Release files for itemdb 1.3.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 itemdb 1.3.0
File Size Uploaded
itemdb-1.3.0.tar.gz 24.1 kB Details

Built distribution (wheel)

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

Total release size: 33.4 kB

Release files / itemdb-1.3.0.tar.gz

Download URL itemdb-1.3.0.tar.gz
Size 24.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3a20016cab6d36909b7426daaf08d058eeee3aeae2527d4a8a9c1fb23b3f9ea1
BLAKE2b-256 checksum
How to use checksums
611bcb18febeda59392c0478ea8eb60d2e266d690d7d45d58cbe4dee7026a7ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.3

Release files / itemdb-1.3.0-py3-none-any.whl

Download URL itemdb-1.3.0-py3-none-any.whl
Size 9.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4902f1bef0cca87d00a352060dd95681fffc424a1a798c72ba759fe7cd12622c
BLAKE2b-256 checksum
How to use checksums
0633f916c6835e5a3a85367753bfe3c8474cb14a6bd81820befd69626b4c91fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.3

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release 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