К сожалению, SQLAlchemy не позволяет вам создавать подклассы Base
без соответствующего объявления таблицы.Вы можете определить класс mixin с get_by_id
как метод класса, но тогда вам нужно будет указать его для каждого класса.
Более быстрое и грязное решение - просто обезьяна-пакетировать его в Base
:
def get_by_id(cls, id, session=session):
return session.query(cls).filter_by(id=id).one()
Base.get_by_id = classmethod(get_by_id)
Это предполагает, что у вас есть объект session
, доступный во время определения, в противном случае вам придется каждый раз передавать его как аргумент.*