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.4.0.tar.gz (10.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.4.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sqlalchemy-things-0.4.0.tar.gz
  • Upload date:
  • Size: 10.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.4.0.tar.gz
Algorithm Hash digest
SHA256 99dc6b9119f73927f07523257374d1630ff03ca16b52e54946e155a4bb6cc4bd
MD5 a893f90d9faecc6663733e9ca578edd5
BLAKE2b-256 3c00e904838793532dd6966d383ccf62614c283853198ca30aabb4ada7c98eb9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sqlalchemy_things-0.4.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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0a6178be2a450064f68b20d194f0fe7ede5ccd2f05b1276cb73e0452d1a40abe
MD5 ecb3688e71940df4bcd0ae73c02920fa
BLAKE2b-256 acd1ef3f1482dc613b901024494e7caf8e7eed111c2da5e7984ecb23954c1c0e

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