Heavily inspired by
keyv
PyKeyVal is a key-value store that you can pack in a bag and take with you.
To install PyKeyVal, simply:
pip install pykeyval
or from source:
python setup.py install
>>> import pykeyval
>>> kv = pykeyval.PyKeyVal(url='sqlite:///opt/myapp/db.sqlite')
>>> kv.set('key', 'val')
True
>>> kv.get('key')
'val'
Returns the value set for key key
.
Sets the key key
to a value val
. Returns True.
Deletes the key key
. Returns True if the key existed.
Deletes all keys in the current name and namespace. Returns True.
PyKeyVal supports the following backends:
Database | Interface | Required Arguments | Options |
---|---|---|---|
Memory | DictKeyVal | ||
File | FileKeyVal | name | path |
Redis | RedisKeyVal | url, name | namespace |
Snowflake | SnowKeyVal | url, name | namespace |
SQLite | SQLiteKeyVal | url, name | namespace |
PostgreSQL | Coming soon | ||
MySQL | Coming soon |
PyKeyVal allows you to setup namespaces for database backends to prevent key collisions.
PyKeyVal uses python's builtin json
library to perform data serialization across multiple backends for data consistency.
You can hook up your own serializer by passing in a serializer class that implements serialize
and deserialize
:
class PickleSerializer:
def serialize(data):
pickle.dumps(data)
def deserialize(data):
pickle.loads(data)
kv = PyKeyVal(serializer=PickleSerializer)