Skip to main content

A package for SQLAlchemy models DML mixins.

Project description

Supported Python versions Imports: isort PyPI - Downloads

model_dml

A package for SQLAlchemy models DML mixins.

Features

  • Three methods for DML operations: insert, update, delete.
  • Add those methods to models through mixin classes.
  • Support returning selected columns for all methods.

Installation

pip install model_dml

Usage

Custom Base

To use model_dml, you need to create a custom base class for your models with a session_maker method.

What is a sessionmaker:

class Base(sqlalchemy.orm.DeclarativeBase):
    @classmethod
    def session_maker(cls) -> sqlalchemy.orm.sessionmaker:
        return <Namespace>.Session

This method exist to allow DML methods to access the sessionmaker without creating a new reference that would also need to be monkey patched. By returning the sessionmaker from the namespace, only <Namespace>.Session needs to be monkey patched.

Compose your model with what you need

class User(base, model_dml.Insert, model_dml.Update, model_dml.Delete):
    __tablename__ = "users"
    id: sqlalchemy.orm.Mapped[int] = sqlalchemy.orm.mapped_column(primary_key=True)
    name: sqlalchemy.orm.Mapped[str] = sqlalchemy.orm.mapped_column(sqlalchemy.String(30))

You can use model_dml.DML which is a helper class that composes all the mixins together.

class User(base, model_dml.DML):
    __tablename__ = "users"
    id: sqlalchemy.orm.Mapped[int] = sqlalchemy.orm.mapped_column(primary_key=True)
    name: sqlalchemy.orm.Mapped[str] = sqlalchemy.orm.mapped_column(sqlalchemy.String(30))

Use the DML methods

User.insert(dict(name="John"))
User.insert({'name': "Jane"})
user = User.insert({'name': "Jack"}, returning=[User.id, User.name])

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

model_dml-0.0.4.tar.gz (13.1 kB view hashes)

Uploaded Source

Built Distribution

model_dml-0.0.4-py3-none-any.whl (5.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page