Skip to main content

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()

functions

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)

Source distribution for kudb 0.2.8
File Size Uploaded
kudb-0.2.8.tar.gz 14.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kudb 0.2.8
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.8 This release

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page