Simple Document database Library
Project description
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
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kudb-0.2.7.tar.gz.
File metadata
- Download URL: kudb-0.2.7.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f39447640438e41dc56a1cb1e764cb7e9678f2aabfbe15836b2ab0e5380b0fb5
|
|
| MD5 |
05dcf182975015328330e14dc39f4105
|
|
| BLAKE2b-256 |
9607546abb84023c5c33c0ee7b355634dad2cbdc7870f62f40799d1babd75166
|
File details
Details for the file kudb-0.2.7-py3-none-any.whl.
File metadata
- Download URL: kudb-0.2.7-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0181d79d6668bb097808bb4438c1269e56b0dd97d58b4600f5611fe1a2fb1ab4
|
|
| MD5 |
0a814a4c4e557c341355aa0d4fb0a3e8
|
|
| BLAKE2b-256 |
c2d00148f1cc2f3058102bfb9315aa3c9f6b93b9aebfbd7c382f65efd5b18044
|