dbflux


Namedbflux JSON
Version 1.0.2 PyPI version JSON
download
home_pageNone
SummaryA simple database management abstraction layer built on SQLAlchemy
upload_time2025-08-23 05:21:13
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords database sqlalchemy orm python
VCS
bugtrack_url
requirements SQLAlchemy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <h1 align="center">🚀 DBFlux: Lightweight Database Management Library</h1>

<p align="center">
<a href="https://pypi.org/project/dbflux/"><img src="https://img.shields.io/pypi/v/dbflux?style=plastic" alt="PyPI - Version"></a>
<a href="https://github.com/abbas-bachari/dbflux"><img src="https://img.shields.io/badge/Python%20-3.8+-green?style=plastic&logo=Python" alt="Python"></a>
  <a href="https://pypi.org/project/dbflux/"><img src="https://img.shields.io/pypi/l/dbflux?style=plastic" alt="License"></a>
  <a href="https://pepy.tech/project/dbflux"><img src="https://pepy.tech/badge/dbflux?style=flat-plastic" alt="Downloads"></a>
</p>

## 🛠️ Version 1.0.2

## 🌟 **Introduction**

#### **DBFlux** 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
* 🛠️ Session Handling
* 🔗 Flexibility – Supports multiple database engines via SQLAlchemy
* ⚡ Lightweight & Efficient
* 🔍 Advanced Filtering
* 📥 Data Insertion
* ✏️ Data Modification
* 📄 Easy Pagination
* 🛡️ Safe Deletion
* 📦 Consistent Output Handling

---

## 📚 **Requirements**

* **Python 3.8+**
* **SQLAlchemy >= 2.0**

---

## 🔧 **Installation**

Install **dbflux** via **pip**:

```bash
pip install dbflux
```

Or install from source:

```bash
git clone https://github.com/abbas-bachari/dbflux.git
cd dbflux
pip install .
```

---


## 💡 **Quick Start**

```python

from dbflux  import Sqlite,DBModel
from sqlalchemy import Column, Integer, String, Float
from sqlalchemy.orm import declarative_base
from time import time

Base=declarative_base()
db = Sqlite(db_name="example.db")


class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    email = Column(String(100))
    age = Column(Integer)
    def __repr__(self):
        return f"User(id={self.id}, name={self.name}, email={self.email}, age={self.age})"

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 to_dict(self):
        return {
            "order_id": self.order_id,
            "product": self.product,
            "price": self.price,
            "time": self.time
        }
    
    def __str__(self):
        return json.dumps(self.to_dict(), indent=4,ensure_ascii=False)

    def __repr__(self):
        return f"Order(order_id={self.order_id}, product={self.product}, price={self.price}, time={self.time})"


db.create_tables(Base)


users=DBModel(User,db)
orders=DBModel(Order,db)


users_data=[
    {"id": 1, "name": "Alice", "email": "alice@test.com","age":22},
    {"id": 2, "name": "Bob", "email": "bob@test.com","age":21},
    {"id": 3, "name": "Carol", "email": "carol@test.com","age":18}
]

orders_data=[
    {"order_id": 1, "product": "Product A", "price": 100, "time": time()},
    {"order_id": 2, "product": "Product B", "price": 200, "time": time()},
    {"order_id": 3, "product": "Product C", "price": 300, "time": time()}
]

users.insert(users_data)
orders.insert(orders_data)

```

---

## 💡 **Examples Usage DBFactory**

```python
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 to_dict(self):
        return {
            "order_id": self.order_id,
            "product": self.product,
            "price": self.price,
            "time": self.time
        }
    
    def __str__(self):
        return json.dumps(self.to_dict(), indent=4,ensure_ascii=False)

    def __repr__(self):
        return f"Order(order_id={self.order_id}, product={self.product}, price={self.price}, time={self.time})"
    


factory = DBFactory(db_name="data.db")

db = factory.create("sqlite")

db.create_tables(Base)

orders_db = DBModel(Order ,db)


order = Order(order_id=1, product="Product A", price=100, time=time())

orders_db.insert( order)

orders:list[Order] = orders_db.get(limit=1)

print(orders)

>>> [Order(order_id=1, product=Product A, price=100.0, time=1755924289.1132557)]

print(orders[0])

>>> {
    "order_id": 1,
    "product": "Product A",
    "price": 100.0,
    "time": 1755924289.1132557
    }

```

---


## 🔹 Supported Database Types

| Type       | Aliases              |
| ---------- | -------------------- |
| SQLite     | sqlite               |
| MySQL      | mysql                |
| PostgreSQL | postgres, postgresql |
| MariaDB    | mariadb              |
| Oracle     | oracle               |
| DB2        | db2, ibmdb2          |
| Firebird   | firebird             |
| MSSQL      | mssql, sqlserver     |

---

## 🔹 Examples for Different Databases

```python
from dbflux.databases import Sqlite, MySQL, PostgreSQL

# Example 1: SQLite
sqlite_db = Sqlite(db_name="data.db")
sqlite_db.create_tables(Base)
sqlite_db.insert(model_class= Order ,data=Order(order_id=10, product="SQLite Product", price=50, time=time()))

# Example 2: MySQL
mysql_db = MySQL(db_name="test_db",username="root", password="password", host="localhost", )
mysql_db.create_tables(Base)
mysql_db.insert(model_class= Order ,data=Order(order_id=11, product="MySQL Product", price=60, time=time()))

# Example 3: PostgreSQL
postgres_db = PostgreSQL(db_name="test_db",username="postgres", password="secret", host="localhost")
postgres_db.create_tables(Base)
postgres_db.insert(model_class= Order ,data=Order(order_id=12, product="PostgreSQL Product", price=70, time=time()))
```

---

### 🎯 Summary of Features

#### ✅ CRUD Operations  

#### ✅ Bulk Insert & Bulk Update  

#### ✅ Advanced Filtering (OR/AND/Range)  

#### ✅ Pagination  

#### ✅ JSON Output  

#### ✅ Transaction Safety  

#### ✅ Direct SQLAlchemy Access via BaseDB  

---

## 📖 **Documentation**

For more details, visit the [official SQLAlchemy documentation](https://docs.sqlalchemy.org/).

---

## 📜 **License**

This project is licensed under the **[MIT License](LICENSE)**.

---

## 👤 **Publisher / ناشر**

**[Abbas Bachari / عباس بچاری](https://github.com/abbas-bachari)**

---

## 💖 **Sponsor**

Support development by sponsoring on **[Github Sponsors](https://github.com/sponsors/abbas-bachari)**.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "dbflux",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "database, SQLAlchemy, ORM, Python",
    "author": null,
    "author_email": "Abbas Bachari <abbas-bachari@hotmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/b5/1f/11b2f5ea890515e54e29b4a83ed2379007073594ee1ededd4f7cac52475b/dbflux-1.0.2.tar.gz",
    "platform": null,
    "description": "<h1 align=\"center\">\ud83d\ude80 DBFlux: Lightweight Database Management Library</h1>\r\n\r\n<p align=\"center\">\r\n<a href=\"https://pypi.org/project/dbflux/\"><img src=\"https://img.shields.io/pypi/v/dbflux?style=plastic\" alt=\"PyPI - Version\"></a>\r\n<a href=\"https://github.com/abbas-bachari/dbflux\"><img src=\"https://img.shields.io/badge/Python%20-3.8+-green?style=plastic&logo=Python\" alt=\"Python\"></a>\r\n  <a href=\"https://pypi.org/project/dbflux/\"><img src=\"https://img.shields.io/pypi/l/dbflux?style=plastic\" alt=\"License\"></a>\r\n  <a href=\"https://pepy.tech/project/dbflux\"><img src=\"https://pepy.tech/badge/dbflux?style=flat-plastic\" alt=\"Downloads\"></a>\r\n</p>\r\n\r\n## \ud83d\udee0\ufe0f Version 1.0.2\r\n\r\n## \ud83c\udf1f **Introduction**\r\n\r\n#### **DBFlux** is a lightweight, easy-to-use library built on top of **SQLAlchemy** to simplify database operations in Python.  \r\n\r\n#### It provides a streamlined interface for **connecting to databases**, **managing sessions**, and **performing CRUD operations** with minimal effort.\r\n\r\n---\r\n\r\n## \u2728 **Features**\r\n\r\n* \ud83d\udd01 Automatic Transaction Management\r\n* \ud83d\udee0\ufe0f Session Handling\r\n* \ud83d\udd17 Flexibility \u2013 Supports multiple database engines via SQLAlchemy\r\n* \u26a1 Lightweight & Efficient\r\n* \ud83d\udd0d Advanced Filtering\r\n* \ud83d\udce5 Data Insertion\r\n* \u270f\ufe0f Data Modification\r\n* \ud83d\udcc4 Easy Pagination\r\n* \ud83d\udee1\ufe0f Safe Deletion\r\n* \ud83d\udce6 Consistent Output Handling\r\n\r\n---\r\n\r\n## \ud83d\udcda **Requirements**\r\n\r\n* **Python 3.8+**\r\n* **SQLAlchemy >= 2.0**\r\n\r\n---\r\n\r\n## \ud83d\udd27 **Installation**\r\n\r\nInstall **dbflux** via **pip**:\r\n\r\n```bash\r\npip install dbflux\r\n```\r\n\r\nOr install from source:\r\n\r\n```bash\r\ngit clone https://github.com/abbas-bachari/dbflux.git\r\ncd dbflux\r\npip install .\r\n```\r\n\r\n---\r\n\r\n\r\n## \ud83d\udca1 **Quick Start**\r\n\r\n```python\r\n\r\nfrom dbflux  import Sqlite,DBModel\r\nfrom sqlalchemy import Column, Integer, String, Float\r\nfrom sqlalchemy.orm import declarative_base\r\nfrom time import time\r\n\r\nBase=declarative_base()\r\ndb = Sqlite(db_name=\"example.db\")\r\n\r\n\r\nclass User(Base):\r\n    __tablename__ = \"users\"\r\n    id = Column(Integer, primary_key=True)\r\n    name = Column(String(50))\r\n    email = Column(String(100))\r\n    age = Column(Integer)\r\n    def __repr__(self):\r\n        return f\"User(id={self.id}, name={self.name}, email={self.email}, age={self.age})\"\r\n\r\nclass Order(Base):\r\n    __tablename__ = \"orders\"\r\n    order_id = Column(Integer, primary_key=True)\r\n    product = Column(String, nullable=False)\r\n    price = Column(Float, nullable=False)\r\n    time = Column(Integer, nullable=False)\r\n    \r\n    def to_dict(self):\r\n        return {\r\n            \"order_id\": self.order_id,\r\n            \"product\": self.product,\r\n            \"price\": self.price,\r\n            \"time\": self.time\r\n        }\r\n    \r\n    def __str__(self):\r\n        return json.dumps(self.to_dict(), indent=4,ensure_ascii=False)\r\n\r\n    def __repr__(self):\r\n        return f\"Order(order_id={self.order_id}, product={self.product}, price={self.price}, time={self.time})\"\r\n\r\n\r\ndb.create_tables(Base)\r\n\r\n\r\nusers=DBModel(User,db)\r\norders=DBModel(Order,db)\r\n\r\n\r\nusers_data=[\r\n    {\"id\": 1, \"name\": \"Alice\", \"email\": \"alice@test.com\",\"age\":22},\r\n    {\"id\": 2, \"name\": \"Bob\", \"email\": \"bob@test.com\",\"age\":21},\r\n    {\"id\": 3, \"name\": \"Carol\", \"email\": \"carol@test.com\",\"age\":18}\r\n]\r\n\r\norders_data=[\r\n    {\"order_id\": 1, \"product\": \"Product A\", \"price\": 100, \"time\": time()},\r\n    {\"order_id\": 2, \"product\": \"Product B\", \"price\": 200, \"time\": time()},\r\n    {\"order_id\": 3, \"product\": \"Product C\", \"price\": 300, \"time\": time()}\r\n]\r\n\r\nusers.insert(users_data)\r\norders.insert(orders_data)\r\n\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udca1 **Examples Usage DBFactory**\r\n\r\n```python\r\nBase = declarative_base()\r\n\r\nclass Order(Base):\r\n    __tablename__ = \"orders\"\r\n\r\n    order_id = Column(Integer, primary_key=True)\r\n    product = Column(String, nullable=False)\r\n    price = Column(Float, nullable=False)\r\n    time = Column(Integer, nullable=False)\r\n    \r\n    def to_dict(self):\r\n        return {\r\n            \"order_id\": self.order_id,\r\n            \"product\": self.product,\r\n            \"price\": self.price,\r\n            \"time\": self.time\r\n        }\r\n    \r\n    def __str__(self):\r\n        return json.dumps(self.to_dict(), indent=4,ensure_ascii=False)\r\n\r\n    def __repr__(self):\r\n        return f\"Order(order_id={self.order_id}, product={self.product}, price={self.price}, time={self.time})\"\r\n    \r\n\r\n\r\nfactory = DBFactory(db_name=\"data.db\")\r\n\r\ndb = factory.create(\"sqlite\")\r\n\r\ndb.create_tables(Base)\r\n\r\norders_db = DBModel(Order ,db)\r\n\r\n\r\norder = Order(order_id=1, product=\"Product A\", price=100, time=time())\r\n\r\norders_db.insert( order)\r\n\r\norders:list[Order] = orders_db.get(limit=1)\r\n\r\nprint(orders)\r\n\r\n>>> [Order(order_id=1, product=Product A, price=100.0, time=1755924289.1132557)]\r\n\r\nprint(orders[0])\r\n\r\n>>> {\r\n    \"order_id\": 1,\r\n    \"product\": \"Product A\",\r\n    \"price\": 100.0,\r\n    \"time\": 1755924289.1132557\r\n    }\r\n\r\n```\r\n\r\n---\r\n\r\n\r\n## \ud83d\udd39 Supported Database Types\r\n\r\n| Type       | Aliases              |\r\n| ---------- | -------------------- |\r\n| SQLite     | sqlite               |\r\n| MySQL      | mysql                |\r\n| PostgreSQL | postgres, postgresql |\r\n| MariaDB    | mariadb              |\r\n| Oracle     | oracle               |\r\n| DB2        | db2, ibmdb2          |\r\n| Firebird   | firebird             |\r\n| MSSQL      | mssql, sqlserver     |\r\n\r\n---\r\n\r\n## \ud83d\udd39 Examples for Different Databases\r\n\r\n```python\r\nfrom dbflux.databases import Sqlite, MySQL, PostgreSQL\r\n\r\n# Example 1: SQLite\r\nsqlite_db = Sqlite(db_name=\"data.db\")\r\nsqlite_db.create_tables(Base)\r\nsqlite_db.insert(model_class= Order ,data=Order(order_id=10, product=\"SQLite Product\", price=50, time=time()))\r\n\r\n# Example 2: MySQL\r\nmysql_db = MySQL(db_name=\"test_db\",username=\"root\", password=\"password\", host=\"localhost\", )\r\nmysql_db.create_tables(Base)\r\nmysql_db.insert(model_class= Order ,data=Order(order_id=11, product=\"MySQL Product\", price=60, time=time()))\r\n\r\n# Example 3: PostgreSQL\r\npostgres_db = PostgreSQL(db_name=\"test_db\",username=\"postgres\", password=\"secret\", host=\"localhost\")\r\npostgres_db.create_tables(Base)\r\npostgres_db.insert(model_class= Order ,data=Order(order_id=12, product=\"PostgreSQL Product\", price=70, time=time()))\r\n```\r\n\r\n---\r\n\r\n### \ud83c\udfaf Summary of Features\r\n\r\n#### \u2705 CRUD Operations  \r\n\r\n#### \u2705 Bulk Insert & Bulk Update  \r\n\r\n#### \u2705 Advanced Filtering (OR/AND/Range)  \r\n\r\n#### \u2705 Pagination  \r\n\r\n#### \u2705 JSON Output  \r\n\r\n#### \u2705 Transaction Safety  \r\n\r\n#### \u2705 Direct SQLAlchemy Access via BaseDB  \r\n\r\n---\r\n\r\n## \ud83d\udcd6 **Documentation**\r\n\r\nFor more details, visit the [official SQLAlchemy documentation](https://docs.sqlalchemy.org/).\r\n\r\n---\r\n\r\n## \ud83d\udcdc **License**\r\n\r\nThis project is licensed under the **[MIT License](LICENSE)**.\r\n\r\n---\r\n\r\n## \ud83d\udc64 **Publisher / \u0646\u0627\u0634\u0631**\r\n\r\n**[Abbas Bachari / \u0639\u0628\u0627\u0633 \u0628\u0686\u0627\u0631\u06cc](https://github.com/abbas-bachari)**\r\n\r\n---\r\n\r\n## \ud83d\udc96 **Sponsor**\r\n\r\nSupport development by sponsoring on **[Github Sponsors](https://github.com/sponsors/abbas-bachari)**.\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A simple database management abstraction layer built on SQLAlchemy",
    "version": "1.0.2",
    "project_urls": {
        "bug-tracker": "https://github.com/abbas-bachari/dbflux/issues",
        "documentation": "https://github.com/abbas-bachari/dbflux#readme",
        "homepage": "https://github.com/abbas-bachari/dbflux"
    },
    "split_keywords": [
        "database",
        " sqlalchemy",
        " orm",
        " python"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c7528ce0d62a80344fb202d0346ef42047db3e48b2d881b8860f220d796cac47",
                "md5": "c97b4545a61f0293f6677aca96fe2411",
                "sha256": "9edda4ea4e7e489d301bd8512896ece5e4b698401d900b2f2ff426f279b52858"
            },
            "downloads": -1,
            "filename": "dbflux-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c97b4545a61f0293f6677aca96fe2411",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 13679,
            "upload_time": "2025-08-23T05:21:11",
            "upload_time_iso_8601": "2025-08-23T05:21:11.318792Z",
            "url": "https://files.pythonhosted.org/packages/c7/52/8ce0d62a80344fb202d0346ef42047db3e48b2d881b8860f220d796cac47/dbflux-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b51f11b2f5ea890515e54e29b4a83ed2379007073594ee1ededd4f7cac52475b",
                "md5": "5a0fde3d60342c35e4cd94df636c5614",
                "sha256": "332684da6c46758328e73a5543b544a28c52a1759df72aaf399c8b4987242b66"
            },
            "downloads": -1,
            "filename": "dbflux-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "5a0fde3d60342c35e4cd94df636c5614",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 13216,
            "upload_time": "2025-08-23T05:21:13",
            "upload_time_iso_8601": "2025-08-23T05:21:13.812503Z",
            "url": "https://files.pythonhosted.org/packages/b5/1f/11b2f5ea890515e54e29b4a83ed2379007073594ee1ededd4f7cac52475b/dbflux-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-23 05:21:13",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "abbas-bachari",
    "github_project": "dbflux",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "SQLAlchemy",
            "specs": [
                [
                    ">=",
                    "2.0.0"
                ]
            ]
        }
    ],
    "lcname": "dbflux"
}
        
Elapsed time: 0.53443s