相关疑难解决方法(0)

如何在SQLAlchemy中使用joinedload/contains_eager来启用查询的关系(lazy ='dynamic'选项)

我有SQLAlchemy声明的以下模型类:

class User(Base):
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False, unique=True)
    created_at = Colmn(DateTime, nullable=False, default=func.now())

class Post(Base):
    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey(User.id), nullable=False)
    user = relationship(User, backref=backref('posts', lazy='dynamic'))
    title = Column(String, nullable=False)
    body = Column(Text, nullable=False)
    created_at = Colmn(DateTime, nullable=False, default=func.now())
Run Code Online (Sandbox Code Playgroud)

正如我所引用的,这些模型有一个关系,其backref命名为postsset-enabled(通过lazy='dynamic'选项).因为一些用户可能拥有大量帖子而大多数用户没有.

有了这些模型,我试过joinedloadUser.posts,但我遇到的错误:

>>> users = session.query(User).options(joinedload(User.posts))[:30]
Traceback (most recent call last):
  ...
InvalidRequestError: 'User.posts' does not support object population - eager loading cannot be applied.
Run Code Online (Sandbox Code Playgroud)

有办法解决这种情况吗?我需要遵循以下两个功能: …

python sqlalchemy

7
推荐指数
1
解决办法
6853
查看次数

标签 统计

python ×1

sqlalchemy ×1