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.7.tar.gz (11.6 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.7-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

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

Hashes for kudb-0.2.7.tar.gz
Algorithm Hash digest
SHA256 f39447640438e41dc56a1cb1e764cb7e9678f2aabfbe15836b2ab0e5380b0fb5
MD5 05dcf182975015328330e14dc39f4105
BLAKE2b-256 9607546abb84023c5c33c0ee7b355634dad2cbdc7870f62f40799d1babd75166

See more details on using hashes here.

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

Hashes for kudb-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 0181d79d6668bb097808bb4438c1269e56b0dd97d58b4600f5611fe1a2fb1ab4
MD5 0a814a4c4e557c341355aa0d4fb0a3e8
BLAKE2b-256 c2d00148f1cc2f3058102bfb9315aa3c9f6b93b9aebfbd7c382f65efd5b18044

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