A package for SQLAlchemy models DML mixins.
Project description
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 = User.insert(dict(name="John"))
user = 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.1.tar.gz
(12.8 kB
view hashes)
Built Distribution
Close
Hashes for model_dml-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | add5466aa5b366fec3f26360fef2c87c24ba48040d7eec9d96dd6166b9065820 |
|
MD5 | 5567e090b25bb664b236a9a19426e9d1 |
|
BLAKE2b-256 | 7fa32188c712c722764dc022c88dbc01d99c28c135193d161e32858d3aa2918f |