Skip to main content

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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kudb-0.2.8.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kudb-0.2.8-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file kudb-0.2.8.tar.gz.

File metadata

  • Download URL: kudb-0.2.8.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.22

File hashes

Hashes for kudb-0.2.8.tar.gz
Algorithm Hash digest
SHA256 3f0277877abd62467b2671ad72c3bd4cbd91f3efd3a698095adab7474e9cbd26
MD5 1f9a629a7a1944fc1acfbbd9d4026c98
BLAKE2b-256 4ba4bacf87efa7b083255de9bbf91c67be233b7828e06900345fab5ca47e29eb

See more details on using hashes here.

File details

Details for the file kudb-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: kudb-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.22

File hashes

Hashes for kudb-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 3bfc5d6dcfd8a0b96c1be774ab956deb0883e1c7b570cbd3da90778dbed138fc
MD5 676a0eb035d0e32eac9ba7688a6edbd2
BLAKE2b-256 7129aa8b976136c1f36ad07fe226585fbaac463d71b5ff73dfa4a0e0d593448a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page