An extension to SQLAlchemy to treat aggregated columns and clauses as Models
Project description
sqlalchemy_bundle_model
An extension to SQLAlchemy to treat aggregated columns and clauses as Models
installation
$ pip install sqlalchemy_bundle_model
usage
>>> from sqlalchemy import Column, BigInteger, Text, ForeignKey
>>> from sqlalchemy.orm import declarative_base, relationship, sessionmaker
>>> from sqlalchemy.engine import create_engine
>>> from sqlalchemy_bundle_model import BundleModel, col
>>> DeclarativeBase = declarative_base()
>>> class User(DeclarativeBase):
... __tablename__ = "users"
... id = Column(BigInteger, primary_key=True)
... name = Column(Text, nullable=False)
... group_id = Column(ForeignKey("groups.id"), nullable=False)
...
... group = relationship("Group")
...
>>> class Group(DeclarativeBase):
... __tablename__ = "groups"
... id = Column(BigInteger, primary_key=True)
... name = Column(Text, nullable=False)
...
>>> class GroupUser(BundleModel):
... id = col(int, User.id)
... name = col(str, User.name)
... group_name = col(str, Group.name)
...
... @staticmethod
... def join(_query):
... return _query.join(User.group)
...
>>> engine = create_engine("sqlite://")
>>> DeclarativeBase.metadata.create_all(bind=engine)
>>> session_cls = sessionmaker(bind=engine)
>>> session = session_cls()
>>> user = User(id=1, name="John Doe")
>>> group = Group(id=1, name="A")
>>> user.group = group
>>> session.add(user)
>>> session.commit()
>>> query = session.query(GroupUser)
>>> query = GroupUser.join(query)
>>> result = query.first()
>>> result.group_name == "A"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for sqlalchemy_bundle_model-0.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 695942f41f4f288e98346e55240a520a290169422592ea295d2961814b776def |
|
MD5 | de8edd89a25c91fadb0f64c3df5ae0f6 |
|
BLAKE2b-256 | 0519c173c6a8136f914a2cde009ac808c3e945b1887868b70b2d96dbfbd82d92 |
Close
Hashes for sqlalchemy_bundle_model-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 062188811c0a4006c90e949875eb61c20b15e9700413f74c944072102727042c |
|
MD5 | 96dcfdefe0f103e22198255859a6d477 |
|
BLAKE2b-256 | 1f4f21496e64ede7fb5c21963c37b569f97cbb323cf61fee3cf60a47fd3812e2 |