high performance persistent python dict with choices of backend
Project description
fastshelf
high performance persistent python3 dict with choices of backend
Usage Example
from fastshelf import Shelf
import dbm.gnu
path = "/tmp/shelf1.gnudb"
shelf1 = Shelf(dbm.gnu.open(path,'cf'))
shelf1['a'] = 'A'
shelf1[(1,2,3)] = 'B'
shelf1[144] = {1,2,3,4,12}
print(dict(shelf1))
shelf1.close()
shelf1 = Shelf(dbm.gnu.open(path,'cf'))
print(dict(shelf1))
print(shelf1[(1,2,3)])
import shutil
shutil.rmtree(path)
shelf2 = Shelf(dbm.gnu.open(path,'cf'))
print(shelf2.get("non_existing_key")) # output None
shelf2['a']='A'
print('a' in shelf2) # output True
del shelf2['a']
print('a' in shelf2) # output False
shelf2.update((i,i**2) for i in range(100)) # batch write
print(len(shelf2)) #output 100
print(shelf2[3]) #output 9
Usage
Shelf class of package fastshelf is a dict-like wrapper, that can use any python objects as key and value.
Shelf handles the serialization and deserialization of python objects.
Shelf object initializes with arguments:
- backend: a dbm-like key-value storage database with "bytes" key and value, options include python3's own gnudb, PlyvelDB(via plyvel) and RocksDB(via lbry-rocksdb) or your own bytes-based key/value store
- serializer: a pickle-like serialization library, by default "pickle", which you can replace with dill/msgpack/bson/json
- track_value_changes: if True, enable experimental feature of tracking and writing back value object changes, to maintain similar new style object reference semantics with dict
You can use Shelf like a dict. In addition to standard dict interfaces, batch writes (Shelf.update) can significantly save time.
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
fastshelf-0.1.1.tar.gz
(2.8 kB
view hashes)
Built Distribution
Close
Hashes for fastshelf-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 043dc2560180fc9ec5880936e7ff6b242151e265657f7becfd6f894185800fe6 |
|
MD5 | 45453bca162dbf38869844a5946c0f67 |
|
BLAKE2b-256 | b8df392443c79097f7ef9b143c803f5cd3257e821ec47009cea49ec887ff690a |