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 formatto autoformat. - Run
ruff checkto lint. - Run
pytest teststo 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)
| File | Size | Uploaded | |
|---|---|---|---|
| itemdb-1.3.0.tar.gz | 24.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|