Skip to main content

Utility collection for development with SQLalchemy ORM.

Project description

Read The Docs build Release PyPI downloads count MIT License Python version support GitHub continuous integration codecov.io status for master branch

Utility collection for development with SQLAlchemy 1.4 / 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_things.declarative import (
    IntegerPrimaryKeyMixin,
    PolymorphicMixin,
)

metadata = sa.MetaData()
Base = orm.declarative_base(metadata=metadata)


class Parent(Base, IntegerPrimaryKeyMixin, PolymorphicMixin):
    __tablename__ = 'single_table'


class ChildA(Parent):
    __mapper_args__ = {'polymorphic_identity': 'child_a'}
    some_field = sa.Column(sa.String(255))


class ChildB(Parent):
    __mapper_args__ = {'polymorphic_identity': 'child_b'}
    other_filed = sa.Column(sa.String(127))

Joined table inheritance with cascade primary key mixins

from sqlalchemy_things.declarative import (
    CascadeIntegerPrimaryKeyMixin,
    PolymorphicMixin,
)

metadata = sa.MetaData()
Base = orm.declarative_base(metadata=metadata)


class Parent(Base, CascadeIntegerPrimaryKeyMixin, PolymorphicMixin):
    __tablename__ = 'cascade_pk_parent_table'


class ChildA(Parent):
    __tablename__ = 'cascade_pk_child_table_a'
    __mapper_args__ = {'polymorphic_identity': 'child_a'}
    some_field = sa.Column(sa.String(255))


class ChildB(Parent):
    __tablename__ = 'cascade_pk_child_table_b'
    __mapper_args__ = {'polymorphic_identity': 'child_b'}
    some_field = sa.Column(sa.String(127))

Joined table inheritance with simple primary key mixins

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

metadata = sa.MetaData()
Base = orm.declarative_base(metadata=metadata)


class Parent(Base, IntegerPrimaryKeyMixin, PolymorphicMixin):
    __tablename__ = 'inherited_pk_parent_table'


class ChildA(ParentPrimaryKeyMixin, Parent):
    __tablename__ = 'inherited_pk_child_table_a'
    __mapper_args__ = {'polymorphic_identity': 'child_a'}
    some_field = sa.Column(sa.String(255))


class ChildB(ParentPrimaryKeyMixin, Parent):
    __tablename__ = 'inherited_pk_child_table_b'
    __mapper_args__ = {'polymorphic_identity': 'child_b'}
    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-0.5.0.tar.gz (6.9 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-0.5.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy-things-0.5.0.tar.gz.

File metadata

  • Download URL: sqlalchemy-things-0.5.0.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.5 Linux/5.4.0-77-generic

File hashes

Hashes for sqlalchemy-things-0.5.0.tar.gz
Algorithm Hash digest
SHA256 c096be0f607ee0090e647e22ab8077420a5bea2bda63934f50bd891663feb70b
MD5 03ca81aea64389f475bf1f2eedb37de2
BLAKE2b-256 88db7d22827635cf3404abe7189dbff4252ce80d811fbd43b9bf06b3927cd3c7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sqlalchemy_things-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.5 Linux/5.4.0-77-generic

File hashes

Hashes for sqlalchemy_things-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 993be72c7e5e569af1e9d5d4640ff3bc37ea4285ff61bd5128c3a16df8cc5860
MD5 5ce9050d39b3fa8d5e5be5a1fb49138a
BLAKE2b-256 4f0ac80959f6b5a651eab4492b68920c1065e7961ccc25a528b3dabc36b504dd

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