Psst, hey, kid, got some dictionaries?
Wanna store those dictionaries?
Check it out, a Key Value Database, or kvdb, in Python.
We can:
- Store dictionaries.
- Retrieve dictionaries.
- Update dictionaries.
- Delete dictionaries (New for version 2).
Example
Import and setup.
import kvdb
db = kvdb.db()
db.setup()
Make and store a dictionary.
ice_king_stats = {'name': 'Ice King', 'class': 'Wizard', 'iz_cool': True}
db.set('ice_king', ice_king_stats)
Wicked. Now let's read it back!
print(db.get('ice_king'))
[{'_key': 'ice_king', '_value': {'name': 'Ice King', 'class': 'Wizard', 'iz_cool': True}}]
>>> fixed_stats = {'iz_cool': False}
Something is not quite right. Let's fix that key with the correct values.
fixed_stats = {'iz_cool': False}
db.update('ice_king', fixed_stats)
print(db.get('ice_king'))
[{'_key': 'ice_king', '_value': {'name': 'Ice King', 'class': 'Wizard', 'iz_cool': False}}]
Fixed!
What if we don't want to do any of that messy updating? Simon says, Wizards Rule!
cool_stats = {'Wizards': 'Rule'}
db.set('ice_king', cool_stats)
print(db.get('ice_king'))
[{'_key': 'ice_king', '_value': {'Wizards': 'Rule'}}]
NEW In v2!
Let's just forget the whole thing.
db.delete('ice_king')
EVEN NEWER in V3!
Blasts from the past.
db.get(k='key_name', when='all')
The 'when' parameter takes a datetime value, with microsecond precision.
Don't know what you are looking for? Get all versions or just the first version of a key:
db.get_first_version(k)
db.get_versoins(k)
Changelog
v1
Set keys. Get keys. Update keys. Key creation and updating is all still handled within the Python process.
v2
Delete keys! Can you believe it? Removed type checks, added type notation to the functions parameters.
v3
Versions.