Easily add soft-deletion to your SQLAlchemy Models.
Project description
SQLAlchemy Easy Soft-Delete
Easily add soft-deletion to your SQLAlchemy Models and automatically filter out soft-deleted objects from your queries and relationships.
This package can generate a tailor-made SQLAlchemy Mixin that can be added to your SQLAlchemy Models, making them contain a field that, when set, will mark the entity as being soft-deleted.
The library also installs a hook which dynamically rewrites all selects which are sent to the database for all tables that implement the soft-delete mixin, providing a seamless experience in both manual queries and model relationship accesses.
Mixin generation is fully customizable and you can choose the field name, its type, and the presence of (soft-)delete/undelete methods.
The default implementation will generate a deleted_at
field in your models, of type DateTime(timezone=True)
, and will also provide a .delete(v: Optional = datetime.utcnow())
and .undelete()
methods.
Installation:
pip install sqlalchemy-easy-softdelete
How to use:
from sqlalchemy_easy_softdelete.mixin import generate_soft_delete_mixin_class
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Integer
from datetime import datetime
# Create a Class that inherits from our class builder
class SoftDeleteMixin(generate_soft_delete_mixin_class()):
# type hint for autocomplete IDE support
deleted_at: datetime
# Apply the mixin to your Models
Base = declarative_base()
class Fruit(Base, SoftDeleteMixin):
__tablename__ = "fruit"
id = Column(Integer)
Example Usage:
all_active_fruits = session.query(Fruit).all()
This will generate a query with an automatic WHERE fruit.deleted_at IS NULL
condition added to it.
all_fruits = session.query(Fruit).execution_options(include_deleted=True).all()
Setting include_deleted=True
(attribute name can be customized) in the query disables soft delete for that query.
License
- BSD-3-Clause
Project details
Release history Release notifications | RSS feed
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
Hashes for sqlalchemy_easy_softdelete-0.5.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a94bf2b40812e6240ef51be5cb47e08bece099415153ff2ccb0a47292aa44da |
|
MD5 | 4d8c2ce29aaf2dc8bdafb80d1d91fce3 |
|
BLAKE2b-256 | 9d4524f4e393bd21e61c94b535fc2dfc5a71335eeea2857d6e219414630f2f2c |
Hashes for sqlalchemy_easy_softdelete-0.5.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b00e90f42c53cc171473dcc525206ce814985b30e98a5b1b6fcf77bf2ee4495 |
|
MD5 | 8f0d4920329bfbe3269626deaf5fa486 |
|
BLAKE2b-256 | abe18e2160bd3e65830f3ab6b593c24cce89eeae55930291e8fe42b6a255f6d2 |