Skip to main content

Lightweight NoSQL-like database with SQLite.

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

🛠️ DuctTapeDB

DuctTapeDB is a lightweight, SQLite-powered solution designed for quickly persisting and searching Pydantic models. Whether you're working on non-technical projects or building fast prototypes with FastAPI, DuctTapeDB provides a simple and intuitive way to store and manage your data.

Originally created for a hobby project, DuctTapeDB has evolved into a powerful tool for rapid development, with a focus on ease of use and integration. 🚀


Why Use DuctTapeDB?

  • Pydantic-Centric: Effortlessly store and search Pydantic models without additional setup.
  • FastAPI-Ready: Perfect for creating CRUD APIs in minutes.
  • Lightweight: Powered by SQLite—works out-of-the-box, no server required.
  • Async and Sync Support:
    • HookLoopDB (Async): Feature-rich and optimized for modern async workflows.
    • DuctTapeDB (Sync): A straightforward synchronous option, with plans to align features across both modes.

Features

  • Simple Persistence: Automatically save and retrieve Pydantic models with minimal code.
  • Advanced Querying: Query data using JSON fields and SQL expressions.
  • Async and Sync Options: Use what fits your project best.
  • FastAPI Integration: Quickly build APIs with CRUD functionality.
  • SQLite-Powered: Works anywhere—no need for additional infrastructure.

Installation

Install DuctTapeDB using pip:

pip install ducttapedb

For examples using FastAPI and FastUI, ensure you also install the required dependencies:

pip install fastapi fastui pydantic

Quickstart

1. Define Your Pydantic Model

from ducttapedb.hookloopdb.model import HookLoopModel

class Item(HookLoopModel):
    name: str
    description: str
    price: float
    in_stock: bool

2. Create a Database

from ducttapedb.hookloopdb.table import HookLoopTable

# Create an async SQLite database
async def setup_database():
    table = await HookLoopTable.create_file("items", "items.db")
    await table.initialize()
    Item.set_table(table)

3. Perform CRUD Operations

Create

item = Item(name="Widget", description="A useful widget", price=19.99, in_stock=True)
await item.save()

Read

retrieved_item = await Item.from_id(item.id)
print(retrieved_item)

Query

items_in_stock = await Item.models_from_db(order_by="json_extract(data, '$.price') ASC")
print(items_in_stock)

Delete

await item.delete()

Using with FastAPI

You can quickly spin up a CRUD API using DuctTapeDB with FastAPI. Here's how:

  1. Run the Example API:

    • Install dependencies:
      pip install fastapi fastui pydantic
      
    • Start the development server:
      uvicorn examples.api.main:app --reload
      
  2. Navigate to: http://127.0.0.1:8000/docs for the interactive API documentation, or to http://127.0.0.1:8000 for a very simple FastUI table and a form to insert items.


Roadmap

  • Align features across HookLoopDB (Async) and DuctTapeDB (Sync).
  • Add more advanced querying capabilities.
  • Simplify relationships and data normalization.

Contributing

Contributions are welcome! If you encounter bugs or have feature requests, feel free to open an issue on GitHub.


License

DuctTapeDB is licensed under the MIT License. See the LICENSE file for more details.


Let me know if you'd like any additional tweaks! 🚀

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

ducttapedb-2025.1.7.2.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

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

ducttapedb-2025.1.7.2-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file ducttapedb-2025.1.7.2.tar.gz.

File metadata

  • Download URL: ducttapedb-2025.1.7.2.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.6

File hashes

Hashes for ducttapedb-2025.1.7.2.tar.gz
Algorithm Hash digest
SHA256 75d26c36cfcee9cbbc8fae298825e47132907b59c815441f1508972f31682e3b
MD5 960b142e24d2544e7f36bbf41fbd426d
BLAKE2b-256 a8dc6ec1bc185c425888c57d3a0af8833589e485e708b3bf8d9afd5549c25f14

See more details on using hashes here.

File details

Details for the file ducttapedb-2025.1.7.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ducttapedb-2025.1.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8fd25745f95e5d16456ce2d4bb25d9b3e0f2a776e7e25a087214b00b439a99ad
MD5 77daa6e173a04726bdf7a74f3b125ac1
BLAKE2b-256 2e400f6bb13d0abd42764f60b3633d4ea9db748e235e8f14bd1fd67d0dbf9bd1

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