python - 在 SQLAlchemy 中过滤大型关系子查询

标签 python python-3.x sqlalchemy

考虑一个带有关系的简单 SQLAlchemy 模型:

class User(Base):

    __tablename__ == 'users'

    friends = relationship('User', secondary=friend,
        primaryjoin=id == friend.c.to_id,
        secondaryjoin=id == friend.c.from_id,
        order_by=friends.c.id,
        lazy='subquery')

在某些病态情况下,用户可能有很多 friend ,从而使此查询非常昂贵:

user_friends = user.friends

我怎样才能执行相同的子查询,但是例如请求特定的 order_by 并限制为 N 对象?我想做这样的事情:

some_friends = user.friends.order_by('some_field').limit(10)

但我无法从文档中了解如何在子查询上配置这些查询选项。

停止将此问题标记为重复问题,所谓的重复问题与处理子查询无关。

最佳答案

事实上,根据@malan的建议,如果没有明确需要子查询,那么使用lazy='dynamic'是这种情况下最简单的解决方案。

关于python - 在 SQLAlchemy 中过滤大型关系子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54863043/

相关文章:

python - 找出对象列是否在 Pandas 中具有多种数据类型的最快和/或最惯用的方法是什么?

python - 在Python中跳过yield

python - 如何使用 TkInter 填充或扩展函数与 self?

python - SQLAlchemy 引擎和 session 对象的类型提示

python - SQLAlchemy 关系与辅助表连接行为在延迟加载和急切加载之间发生变化

python - 对象上的 SQLalchemy 过滤器

python - 如何使用 pandas 读取带有嵌套列的 Excel 文件?

Python:逻辑回归给出 ValueError:未知标签类型: 'continuous'

python - 在图像上绘制对角线

python - 通过将列表索引视为python中的键,将dict中的所有列表转换为dict