sheoak / sqlalchemy-mixins-for-starlette

Active Record, Django-like queries, nested eager load and beauty __repr__ for SQLAlchemy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status PyPI version Python versions

A fork of sqlalchemy-mixins for starlette, especially fastapi.

Features added by scil

Example

# base_class.py

from sqlalchemy_mixins import AllFeaturesMixin as SimpleBase  # noqa

class Base(SimpleBase):
    __abstract__ = True

    # Default auto incrementing primary key field
    # overwrite as needed
    id = sa.Column(sa.Integer, primary_key=True)

    @declared_attr
    def __tablename__(cls) -> str:
        return cls.__name__.lower()

    def __str__(self):
        return self.__repr__()

# app/models/item.py

from app.db import Base

class Item(Base):
    title = Column(sa.String, index=True)
    description = Column(sa.String, index=True)
    owner_id = Column(sa.Integer, ForeignKey("user.id"))
    owner = relationship("User", back_populates="items")

use

models.Item.create_from_schema(db, item_in, {'owner_id':current_user.id})

About accent-starlette/starlette-core

Old version v2 based on accent-starlette/starlette-core

Main unique feature: use customize session instead of session provided by starlette_core.

user = User()
user.save() # use starlette_core session
user.db(my_db)
user.save() # use my_db
user.db(None)
user.save() # use starlette_core session

User.create_from_schema(user_in, my_db) # use my_db

SQLAlchemy mixins

see full docs in origian absent1706/sqlalchemy-mixins

About

Active Record, Django-like queries, nested eager load and beauty __repr__ for SQLAlchemy

License:MIT License


Languages

Language:Python 100.0%