LightDB

What is this?

LightDB is a simple and lightweight JSON database for Python that allows users to efficiently write data to a file. It is designed to be easy to use, making it a great choice for developers who need a fast and reliable way to store and retrieve data

Features

  • Lightweight and Simple: LightDB is a lightweight database implemented as a Python dictionary with an intuitive API for easy key-value management

  • JSON Storage and Persistence: Data is stored and retained in a JSON file, allowing easy external editing and persistence between runs

  • Reset Capability: Provides a reset method to clear the database and start fresh

  • Type Agnostic: Can store any Python object as a value

  • Portable: Easily transferable between systems, ideal for simple data storage

  • Model Support: Supports models for structured data management, ensuring organized and maintainable code

Simple usage

from lightdb import LightDB

# Create a new database object, or load an existing one from file
db = LightDB("db.json")

# Set a key-value pair
db.set("name", "Alice")

# Get the value associated with a key
name = db.get("name")
print(name)  # Output: "Alice"

# Remove a key-value pair from the database
db.pop("name")

# Reset the database to an empty state
db.reset()

# After this, you need to save changes
db.save()

Models usage

from lightdb import LightDB
from lightdb.models import Model

from typing import List, Dict, Any

# Initialize the database
db = LightDB("db.json")


# Define a User model
class User(Model, table="users"):
    name: str
    age: int
    items: List[str] = []
    extra: Dict[str, Any] = {}


# Create a new user
user = User.create(name="Alice", age=30)
print(f"Created User: {user}")

# Retrieve the user
retrieved_user = User.get(name="Alice")
if retrieved_user:
    print(f"Retrieved User: {retrieved_user.name}, Age: {retrieved_user.age}")

# Update the user's name
retrieved_user.name = "Kristy"
retrieved_user.save()
print(f"Updated User: {retrieved_user}")

# Filter users by age
users_over_20 = User.filter(User.age >= 20)
print("Users over 20:")
for user in users_over_20:
    print(f"Name: {user.name}, Age: {user.age}")

# Delete the user
retrieved_user.delete()
print(f"Deleted User: {retrieved_user.name}")

# Verify deletion
deleted_user = User.get(name="Kristy")
print(f"User exists after deletion: {deleted_user is not None}")