如何将 SQLAlchemy ORM 模型传递给 Python Generic[T] class

How to pass a SQLAlchemy ORM model to Python Generic[T] class

我正在尝试使用 SQLAlchemy 和 python 泛型创建实体架构,即模型 -> 存储库 -> API

我有以下用户模型:

class User(db.Model):
  id
  username
  email
  ...

以下存储库代码:

class UserRepository(Repository[User]):
  pass

我正在尝试找到一种可以从 Repository 基础 class 中“访问”用户模型的方法,例如:

T = TypeVar('T')

class Repository(Generic[T]):

  @staticmethod
  def get(id) -> T:
    return T.query.filter(...)

也尝试过 db.session.query(...) 但没有成功。

有什么想法吗?

谢谢。

在class变量的帮助下设法解决了它

class XRepository(BaseRepository):
  model = X


class YRepository(BaseRepository):
  model = Y

class BaseRepository:

  @classmethod
  def get(cls):
    return cls.model.query.filter(...)