Skip to main content

A Python library for Database Management

Project description

🚀 Dabas: Lightweight Database Management Library

PyPI - Version Python License Downloads

🛠️ Version 1.0.3

🌟 Introduction

Dabas is a lightweight, easy-to-use library built on top of SQLAlchemy to simplify database operations in Python.

It provides a streamlined interface for connecting to databases, managing sessions, and performing CRUD operations with minimal effort.


Features

  • 🔁 Automatic Transaction Management – Ensures safe commits and rollbacks.
  • 🛠️ Session Handling – Provides a clean API for managing database sessions.
  • 🔗 Flexibility – Supports multiple database engines via SQLAlchemy.
  • Lightweight & Efficient – Designed to be minimal while offering essential functionality.
  • 🔍 Advanced Filtering – Supports OR/AND/range conditions.
  • 📥 Data Insertion – Insert and bulk insert support.
  • ✏️ Data Modification – Update and bulk update capabilities.
  • 📄 Easy Pagination – Simplifies data navigation.
  • 🛡️ Safe Deletion – Protects data with rollback support.
  • 📦 Consistent Output Handling – Ensures structured data response.

📚 Requirements

  • Python 3.7+
  • SQLAlchemy >= 1.4

🔧 Installation

Install Dabas via pip:

pip install Dabas

💡 Quick Start

Here’s how you can quickly set up and use Dabas in your project.

from Dabas import DatabaseManager, EngineFactory
from sqlalchemy import Column, Integer, Float, String
from sqlalchemy.orm import declarative_base
from time import time

Base = declarative_base()

class Order(Base):
    __tablename__ = "orders"

    order_id = Column(Integer, primary_key=True)
    product = Column(String, nullable=False)
    price = Column(Float, nullable=False)
    time = Column(Integer, nullable=False)

    def __init__(self, order_id, product, price, time):
        self.order_id = order_id
        self.product = product
        self.price = price
        self.time = time

# Example data
order_1 = {"order_id": 1, "product": "product_1", "price": 100, "time": time()}
order_2 = Order(order_id=2, product="product_2", price=200, time=time())

# Database setup
engine = EngineFactory("data.db").sqlite()
db = DatabaseManager(engine=engine, base=Base)

# Create tables if they don't exist
db.create_tables()

# Insert records
db.insert(Order(**order_1))
db.insert(order_2)

# Query data
orders = db.get(Order, limit=2).to_json()
print(orders)

🖥️ Expected Output

[
    {
        "order_id": 1,
        "price": 100.0,
        "product": "product_1",
        "time": 1746916053.5904622
    },
    {
        "order_id": 2,
        "price": 200.0,
        "product": "product_2",
        "time": 1746916053.5904622
    }
]

Advanced Examples with Dabas

1️⃣ Bulk Insert Data Efficiently

# Insert multiple orders in one transaction
bulk_orders = [
    {"order_id": 3, "product": "product_3", "price": 150, "time": time()},
    {"order_id": 4, "product": "product_4", "price": 250, "time": time()},
    {"order_id": 5, "product": "product_5", "price": 350, "time": time()},
]

db.bulk_insert(Order,bulk_orders)

✅ Faster insertion

✅ Minimizes database overhead

2️⃣ Query with Filters (OR, AND, Range)

# Get orders where price is between 100 and 200
filters=[Order.price.between(100, 200)]

filtered_orders =  db.search(model_class,  conditions=filters).to_json()



# Get orders with specific conditions (OR)
from sqlalchemy import  or_
or_filters=[or_(Order.product=="product_1",Order.price==250)]
or_filtered_orders =db.search(model_class, conditions=or_filters).to_json()


# Get orders with specific conditions (AND)
and_filters=[
    Order.product=="product_1",
    Order.price==250
    ]
and_filtered_orders =db.search(model_class, conditions=and_filters).to_json()


print(filtered_orders, or_filtered_orders, and_filtered_orders)

Flexible filtering with OR/AND and range condition

3️⃣ Update Records with Bulk Update

# Update multiple records at once
update_data = [{"order_id": 3, "product": "Updated_Product_3"}, {"order_id": 4, "price": 275}]
db.bulk_update(Order, update_data)

Easily update multiple records in one operation

4️⃣ Safe Deletion with Rollback Suppor

# Delete an order safely
conditions=[Order.order_id==5]
db.delete(Order, conditions=conditions)

Ensures rollback support in case of errors

5️⃣ Pagination for Large Dataset

# Get paginated results (2 items per page)
page_1 = db.paginate(page=1, per_page=2).to_json()
page_2 = db.paginate(page=2, per_page=2).to_json()

print(page_1, page_2)

Easier navigation in large datasets


🎯 Summary of New Features

✅ Bulk insert for efficient data handling

✅ Advanced filtering with OR/AND/Range conditions

✅ Bulk updates for multiple records at once

✅ Safe deletion with rollback protection

✅ Pagination for large queries

📖 Documentation

For more details, visit the official SQLAlchemy documentation.

📜 License

This project is licensed under the MIT License.

💖 Sponsor

Support development by sponsoring on Github Sponsors.

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

dabas-1.0.3.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

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

dabas-1.0.3-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file dabas-1.0.3.tar.gz.

File metadata

  • Download URL: dabas-1.0.3.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for dabas-1.0.3.tar.gz
Algorithm Hash digest
SHA256 fc220c5cab30b819905eadb7d78f4aa1329a22472888e5b50d0e9fc1ebc8b174
MD5 bc0b8f011b64e46364bc2560d4758550
BLAKE2b-256 f3ba12d7afd159af006e20add09f69aff7f10bfde4d882bea93d94f03a09dbab

See more details on using hashes here.

File details

Details for the file dabas-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: dabas-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for dabas-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e91bfe6c724b78031189fd31f16366aa50e02e93dd7c9b53c4c0995e114bfdc0
MD5 0b9dcacd2b31c26e839b203a13d08398
BLAKE2b-256 3ca970859666f4dd92c89c408fa40757c0ce7b9842aca765d92ae612477c5124

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