Skip to main content

Utility collection for development with SQLalchemy ORM.

Project description

Read The Docs build Release MIT License Python version support PyPI downloads count GitHub continuous integration

Utility collection for development with SQLAlchemy 2.0 ORM.

Documentation

https://sqlalchemy-things.readthedocs.io

Installation

Installing sqlalchemy-things with pip:

pip install sqlalchemy-things

Examples

Single table inheritance

from sqlalchemy import orm
from sqlalchemy_things.declarative import (
    IntegerPrimaryKeyMixin,
    PolymorphicMixin,
)

class Base(orm.DeclarativeBase): ...


class ParentA(Base, IntegerPrimaryKeyMixin, PolymorphicMixin):
    __tablename__ = "single_table"


class ChildA1(ParentA):
    __mapper_args__ = {"polymorphic_identity": "child_a1"}
    some_field = sa.Column(sa.String(255))


class ChildA2(ParentA):
    __mapper_args__ = {"polymorphic_identity": "child_a2"}
    other_filed = sa.Column(sa.String(127))

Joined table inheritance with cascade primary key mixins

from sqlalchemy import orm
from sqlalchemy_things.declarative import (
    CascadeIntegerPrimaryKeyMixin,
    PolymorphicMixin,
)

class Base(orm.DeclarativeBase): ...


class ParentB(Base, CascadeIntegerPrimaryKeyMixin, PolymorphicMixin):
    __tablename__ = "parent_b"


class ChildB1(ParentB):
    __tablename__ = "child_b1"
    __mapper_args__ = {"polymorphic_identity": "child_b1"}
    some_field = sa.Column(sa.String(255))


class ChildB2(ParentB):
    __tablename__ = "child_b2"
    __mapper_args__ = {"polymorphic_identity": "child_b2"}
    some_field = sa.Column(sa.String(127))

Joined table inheritance with simple primary key mixins

from sqlalchemy import orm
from sqlalchemy_things.declarative import (
    IntegerPrimaryKeyMixin,
    ParentPrimaryKeyMixin,
    PolymorphicMixin,
)

class Base(orm.DeclarativeBase): ...


class ParentC(Base, IntegerPrimaryKeyMixin, PolymorphicMixin):
    __tablename__ = "parent_c"


class ChildC1(ParentPrimaryKeyMixin, ParentC):
    __tablename__ = "child_c1"
    __mapper_args__ = {"polymorphic_identity": "child_c1"}
    some_field = sa.Column(sa.String(255))


class ChildC2(ParentPrimaryKeyMixin, ParentC):
    __tablename__ = "child_c2"
    __mapper_args__ = {"polymorphic_identity": "child_c2"}
    some_field = sa.Column(sa.String(127))

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

sqlalchemy_things-1.2.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

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

sqlalchemy_things-1.2.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy_things-1.2.0.tar.gz.

File metadata

  • Download URL: sqlalchemy_things-1.2.0.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.8.0-90-generic

File hashes

Hashes for sqlalchemy_things-1.2.0.tar.gz
Algorithm Hash digest
SHA256 e969d53744184a4e851dbe66bd9fc87d8e524dfbfc7e29ae370280a3588724a1
MD5 c4fac319bff273977df63a04b7fc8c14
BLAKE2b-256 29ab049b4942848b686ad2fad7851eac7595e8e9e1ea7e95f568971f5ca6440a

See more details on using hashes here.

File details

Details for the file sqlalchemy_things-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: sqlalchemy_things-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.8.0-90-generic

File hashes

Hashes for sqlalchemy_things-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77a683393e7c2b8b3f7db13ca638405e147992419d4771a9ef9f1e435135098f
MD5 3d4c786702ffed06eb7e29f2ec34f840
BLAKE2b-256 df6854917e8031ad6402515ad666c674bff81bcd8dd7c4726d61926e5e66129c

See more details on using hashes here.

Supported by

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