A python key-value file database
Project description
Introduction
Booklet is a pure python key-value file database. It allows for multiple serializers for both the keys and values. The API is designed to use all of the same python dictionary methods python programmers are used to in addition to the typical dbm methods.
Installation
Install via pip:
pip install booklet
Or conda:
conda install -c mullenkamp booklet
I’ll probably put it on conda-forge once I feel like it’s up to an appropriate standard…
Serialization
Both the keys and values stored in Booklet must be bytes when written to disk. This is the default when “open” is called. Booklet allows for various serializers to be used for taking input keys and values and converting them to bytes. The in-build serializers include pickle, str, json, and orjson (if orjson is installed). If you want to serialize to json, then it is highly recommended to use orjson as it is substantially faster than the standard json python module. The user can also pass custom serializers to the key_serializer and value_serializer parameters. These must have “dumps” and “loads” static methods. This allows the user to chain a serializer and a compressor together if desired.
Usage
The docstrings have a lot of info about the classes and methods. Files should be opened with the booklet.open function. Read the docstrings of the open function for more details.
Write data
import booklet
with booklet.open('test.book', 'n', value_serializer='pickle', key_serializer='str') as db:
db['test_key'] = ['one', 2, 'three', 4]
Read data
with booklet.open('test.book', 'r') as db:
test_data = db['test_key']
Notice that you don’t need to pass serializer parameters when reading. Booklet stores this info on the initial file creation.
Recommendations
In most cases, the user should use python’s context manager “with” when reading and writing data. This will ensure data is properly written and (optionally) locks are released on the file. If the context manager is not used, then the user must be sure to run the db.sync() at the end of a series of writes to ensure the data has been fully written to disk. And as with other dbm style APIs, the db.close() must be run to close the file and release locks. MultiThreading is safe for multiple readers and writers, but only multiple readers are safe with MultiProcessing.
Benchmarks
Coming soon…
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file booklet-0.0.6.tar.gz
.
File metadata
- Download URL: booklet-0.0.6.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/0.0.0 pkginfo/1.8.2 readme-renderer/27.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.4.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94fa4da5ca7b6d44b61741c294699abf566fc542a71ba01b9355ca1974668915 |
|
MD5 | a2d72a1c418ecc262ff502fb3620dc5b |
|
BLAKE2b-256 | 99ed2c2e55637a91aa702087fab28037618f658ec835dac2470dce0bec4e2fc2 |
File details
Details for the file booklet-0.0.6-py2.py3-none-any.whl
.
File metadata
- Download URL: booklet-0.0.6-py2.py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/0.0.0 pkginfo/1.8.2 readme-renderer/27.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.4.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d65794c9a1dcde3607e98dc6651c88bb8b9ec3c38a0e8d7f20ddbc805d8ca240 |
|
MD5 | 0b46f04cdcbfba1c1a8eab3bbb20114f |
|
BLAKE2b-256 | 76b4a3d6fee5534c0c6ccec6a670ff009392a51e6be61757e72c75ad5cf25773 |