kudb
simple document database for python
Features
- Simple and convenient Document database and Key-value Store Library
- Easy to install (Use SQLite for the back end)
Installation
pip install kudb
# or
python3 -m pip install kudb
Repository
Documents
Usage - document based
- (1) connect to database --- kudb.connect()
- (2) CRUD
- insert data --- kudb.insert()
- update data --- kudb.update()
- get data --- kudb.get_all() / kudb.get()
- delete data --- kudb.delete()
- (3) close --- kudb.close()
Basic Sample
Basic sample
import kudb
kudb.connect('test.db')
# insert data
kudb.insert({'name': 'Tako', 'age': 18})
kudb.insert({'name': 'Ika', 'age': 19})
kudb.insert({'name': 'Poko', 'age': 12})
kudb.insert({'name': 'Foo', 'age': 13})
# get all data
for row in kudb.get_all():
print('get_all >', row) # all
# close
kudb.close()
Find data
Find data
import kudb
kudb.connect('test.db')
# clear all data
kudb.clear()
# insert many data
kudb.insert_many([
{'name': 'Tako', 'age': 18},
{'name': 'Ika', 'age': 19},
{'name': 'Hirame', 'age': 20},
])
# get by id
print('id=2 >', kudb.get(id=2))
# find by keys
for row in kudb.find(keys={'name': 'Tako'}):
print('name=Tako >', row)
# find by lambda
for row in kudb.find(lambda v: v['name'] == 'Tako'):
print('name=Tako >', row)
# get recent data
for row in kudb.recent(2):
print('recent(2) =>', row) # => Ika, Hirame
High Score Management
High score management sample:
import kudb
kudb.connect('game.db')
kudb.clear()
# insert score data
kudb.insert_score(100, "Player A")
kudb.insert_score(250, "Player B")
kudb.insert_score(180, "Player C")
kudb.insert_score(320, "Player D")
kudb.insert_score(150, "Player E")
# get high score (top 3)
for i, row in enumerate(kudb.get_high_score(3), 1):
print(f"{i}. {row['name']}: {row['score']}")
# Output:
# 1. Player D: 320
# 2. Player B: 250
# 3. Player C: 180
# insert score with additional metadata
kudb.insert_score(400, "Player F", meta={"level": 5, "time": 120})
# get top score
top_player = kudb.get_high_score(1)[0]
print(f"Top Score: {top_player['name']} - {top_player['score']}")
kudb.close()
Search data with tag
The doc data can set tag. When use data with tag, you can search data quickly. And use data with tag, you can update/delete data quickly.
import kudb
kudb.connect('test.db')
kudb.clear()
# insert data with tag
kudb.insert({'name': 'Tako', 'age': 18}, tag='Tako')
kudb.insert({'name': 'Ika', 'age': 19}, tag='Ika')
kudb.insert({'name': 'Poko', 'age': 12}, tag='Poko')
# get data by tag
print('tag=Ika =>', kudb.get(tag='Ika')[0])
# insert many data with tag_name
kudb.insert_many([
{"name": "A", "age": 10},
{"name": "B", "age": 11},
{"name": "C", "age": 12}], tag_name='name')
# get data by tag
print('tag=B =>', kudb.get(tag='B')[0])
# get data by id (most speedy)
print('id=1 =>', kudb.get(id=1)) # => Tako
# get data by tag
for row in kudb.get(tag="Ika"):
print('tag=Ika =>', row) # Ika
# find data with keys
for row in kudb.find(keys={"name": "Ika"}): # enum data when name=Ika
print('find.keys={name:ika} => ', row) # Ika
for row in kudb.find(keys={"age": 19}): # enum data when age=19
print('find.keys={age:19} => ',row) # 19 (Ika)
# find data with lambda function
for row in kudb.find(lambda v: v['name'] == 'Ika'): # enum data when name=Ika
print('lambda.name=Ika =>', row) # => Ika
for row in kudb.find(lambda v: v['age'] >= 12): # enum data when age >= 12
print('lambda.age=12 =>', row) # => Ika
Update and delete
Update and delete sample:
import kudb
kudb.connect('test.db')
kudb.clear()
# insert many data with tag_name
kudb.insert_many([
{"name": "A", "age": 10},
{"name": "B", "age": 11},
{"name": "C", "age": 12},
{"name": "D", "age": 13},
{"name": "E", "age": 14}], tag_name='name')
# delete by id
kudb.delete(id=5)
# delete by tag
kudb.delete(tag='C')
# update data by id
kudb.update_by_id(1, {'name': 'A', 'age': 22})
print('update.A=22 >', kudb.get(id=1))
# update dagta by tag
kudb.update_by_tag('B', {'name': 'B', 'age': 23})
print('update.B=23 >', kudb.get(tag='B'))
Key-Value Store
Key-Value Store sample:
import kudb
kudb.connect('test.db')
kudb.set_key('hoge', 1234)
print(kudb.get_key('hoge'))
# get data that does not exists
print(kudb.get_key('hoge_1st', 'not exists'))
kudb.close()
Type Hints Support
This library now supports type hints (PEP 484). All functions and methods have proper type annotations for better IDE support and static type checking.
Requirements
- Python 3.6 or higher
Metadata
Release files for kudb 0.2.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kudb-0.2.8.tar.gz | 14.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kudb-0.2.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.7 kB
Release files / kudb-0.2.8.tar.gz
| Download URL | kudb-0.2.8.tar.gz |
|---|---|
| Size | 14.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f0277877abd62467b2671ad72c3bd4cbd91f3efd3a698095adab7474e9cbd26
|
|
BLAKE2b-256 checksum How to use checksums |
4ba4bacf87efa7b083255de9bbf91c67be233b7828e06900345fab5ca47e29eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.22
|
Release files / kudb-0.2.8-py3-none-any.whl
| Download URL | kudb-0.2.8-py3-none-any.whl |
|---|---|
| Size | 10.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3bfc5d6dcfd8a0b96c1be774ab956deb0883e1c7b570cbd3da90778dbed138fc
|
|
BLAKE2b-256 checksum How to use checksums |
7129aa8b976136c1f36ad07fe226585fbaac463d71b5ff73dfa4a0e0d593448a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.22
|