Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

flask-sqlalchemy-crud

English | 中文

A lightweight CRUD + transaction helper for SQLAlchemy (Flask glue can be added via extensions):

  • Context-managed CRUD with nested savepoints: with CRUD(Model) as crud:
  • Function-level transactions via @CRUD.transaction() with join semantics
  • Configurable error policy (error_policy="raise"|"status_only") and pluggable logger
  • Type-friendly CRUDQuery wrapper for common chainable operations

Install

pip install flask-sqlalchemy-crud
# or
pip install -e .

Requires Python 3.11+ with sqlalchemy>=1.4 (optional Flask integration can be added separately).

Quick Start (pure SQLAlchemy)

from sqlalchemy import String, Integer, create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, sessionmaker
from flask_sqlalchemy_crud import CRUD

engine = create_engine("sqlite:///./crud_example.db", echo=False)
SessionLocal = sessionmaker(bind=engine, expire_on_commit=False)


class Base(DeclarativeBase):
    pass


class User(Base):
    __tablename__ = "example_user"
    id: Mapped[int] = mapped_column(Integer, primary_key=True)
    email: Mapped[str] = mapped_column(String(255), unique=True, nullable=False)


Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)

CRUD.configure(session_provider=SessionLocal, error_policy="raise")

with CRUD(User) as crud:
    user = crud.add(email="demo@example.com")
    print("created", user)

with CRUD(User, email="demo@example.com") as crud:
    print("fetched", crud.first())

Function-Level Transactions

from flask_sqlalchemy_crud import CRUD

CRUD.configure(session_provider=SessionLocal, error_policy="raise")

@CRUD.transaction(error_policy="raise")
def create_two_users():
    with CRUD(User) as crud1:
        crud1.add(email="a@example.com")
    with CRUD(User) as crud2:
        crud2.add(email="b@example.com")

create_two_users()
  • The outermost call commits or rolls back; inner CRUD contexts only mark status when exceptions occur.
  • With error_policy="status_only", SQLAlchemyError is rolled back and caught; check crud.status / crud.error instead.

Docs & Examples

  • Full example: docs/examples/basic_crud.py
  • Transaction refactor notes/TODO: docs/crud_refactor_todo.md
  • Typing directions: docs/todo.md

Testing

  1. Provide a DB URI via env or .env: TEST_DB=sqlite:///./test.db (or another driver).
  2. Install test deps, then:
    pytest -q
    

Notes

  • SQLAlchemy-first; optional Flask integration can be layered via extensions.
  • Always call CRUD.configure(session_provider=...) before using CRUD instances.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask_sqlalchemy_crud-0.1.0.tar.gz (20.5 kB view details)

Uploaded Source

Built Distribution

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

flask_sqlalchemy_crud-0.1.0-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file flask_sqlalchemy_crud-0.1.0.tar.gz.

File metadata

  • Download URL: flask_sqlalchemy_crud-0.1.0.tar.gz
  • Upload date:
  • Size: 20.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flask_sqlalchemy_crud-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e606573608051ac1296349f77a41aee3ef21e3f00972bd83e64230cbefa6b4ef
MD5 bfc6448c233a082eb6756732a5148a23
BLAKE2b-256 54586db75bd38ef30193180d1032ca12f5fcc8e8592562eb21dde466650454ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for flask_sqlalchemy_crud-0.1.0.tar.gz:

Publisher: publish-pypi.yml on ZM-Kimu/flask_sqlalchemy_crud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flask_sqlalchemy_crud-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for flask_sqlalchemy_crud-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc953273f3c9973ddf0ef9d19cf12200c55a4cc2a65ae9c8c6bbb98120280b48
MD5 bfda35c82b3fa871643906fff56dcf74
BLAKE2b-256 cb4c476fcb0cfe9e4eced5d329e5ae924771951051e600e33d979ab94b4d1a31

See more details on using hashes here.

Provenance

The following attestation bundles were made for flask_sqlalchemy_crud-0.1.0-py3-none-any.whl:

Publisher: publish-pypi.yml on ZM-Kimu/flask_sqlalchemy_crud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page