Key-Value&Model Database
Project description
kvm-db
kvm-db is a Python library that provides a simple interface for both key-value storage and model-based data management using SQLite.
Features
- Key-Value Store: Simple API for key-value data operations.
- Model Database: Manage data using Python classes and objects.
Supported Backends
SQLite
pip install 'kvm-db'
from kvm_db import Sqlite
backend = Sqlite("db.sqlite")
DynamoDB
pip install 'kvm-db[dynamodb]'
from kvm_db import DynamoDB
backend = DynamoDB("table_name")
Terrform example for creating a DynamoDB table:
module "kv_table" {
source = "terraform-aws-modules/dynamodb-table/aws"
version = "4.0.1"
name = "example-keyval-table"
hash_key = "key"
attributes = [
{
name = "key"
type = "S"
},
{
name = "table"
type = "S"
},
]
global_secondary_indexes = [
{
name = "table-index"
hash_key = "table"
projection_type = "ALL"
}
]
# If you want to enable TTL
ttl_attribute_name = "ttl"
ttl_enabled = true
}
You can insert datum with ttl attribute like this:
kv_db.insert_datum(TABLE, KEY, VALUE, ttl=10) # 10 seconds
SQLs
TODO
JsonDB
TODO
Installation
Install kvm-db using pip:
pip install kvm-db
Quick Start
You can retrieve the value using this syntax
db[TABLE_NAME, KEY]
# Or
table_db = db[TABLE_NAME]
table_db[KEY]
Below is a quick example to get you started with kvm-db.
Key-Value Database Example
from kvm_db import KeyValDatabase, Sqlite
# Initialize the database with SQLite
kv_db = KeyValDatabase(Sqlite("kv.db"))
# Create a new table
kv_db.create_table("test_table")
# Adding and accessing data
kv_db["test_table", "key1"] = "value1"
kv_db["test_table"]["key2"] = "value2"
# Retrieve all items in the table
print(kv_db["test_table", :]) # Output: [('key1', 'value1'), ('key2', 'value2')]
# Update and delete data
kv_db["test_table", "key1"] = "updated_value"
del kv_db["test_table", "key1"]
# Check the table after deletion
print(kv_db["test_table", :]) # Output: []
Model(Pydantic) Database Example
TODO: Support native Python dataclasses and other data types.
from kvm_db import ModelDatabase, Sqlite, TableModel
class User(TableModel):
name: str
# Initialize Model Database with SQLite
model_db_backend = Sqlite("model.db")
model_db = ModelDatabase(model_db_backend)
# Register the model
model_db.register(User)
# Create and insert a new user
user1 = User(name="Alice")
model_db.insert(user1)
# Query users
all_users = model_db[User][:]
print(all_users[0].name) # Output: Alice
# Query user with id
alice_id = user1.id
alice = model_db[User][alice_id]
print(alice.name) # Output: Alice
# Update user information
alice.name = "Bob"
alice.commit()
# Confirm update
print(model_db[User, :][0].name) # Output: Bob
# Delete a user
user1.delete()
print(model_db[User, :]) # Output: []
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
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 kvm_db-0.1.6.tar.gz.
File metadata
- Download URL: kvm_db-0.1.6.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bd42926355a05517b04406de5c76d95ef0e29f40aabe4b96cb11ff6c916b62e
|
|
| MD5 |
9828d734dfc2e84526a3ed6586901b7b
|
|
| BLAKE2b-256 |
337302dae473b4dab2ae7908edf11b41f7054096b9ac4ae514d9c2780d96eec5
|
File details
Details for the file kvm_db-0.1.6-py3-none-any.whl.
File metadata
- Download URL: kvm_db-0.1.6-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b81283218a9f47737a467fdc7e08c5b7a440a068938143bea984a26e5d6b1e92
|
|
| MD5 |
6d645bdd3c0d15aa08bed73a2edddbd9
|
|
| BLAKE2b-256 |
77a5487c9ae4d7e08de9717806c88af13bbd51946c41c72440c093aba493b592
|