python - 在 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')
在某些病态的情况下,用户可能有很多朋友,因此使这个查询非常昂贵:
user_friends = user.friends
如何执行相同的子查询,但例如请求特定对象order_by
并限制N
对象?我想做类似的事情:
some_friends = user.friends.order_by('some_field').limit(10)
但我无法从文档中了解如何在 subquery 上配置这些查询选项。
停止将这个问题标记为重复,所谓的重复问题与处理子查询无关。
解决方案
事实上,根据@malan 的建议,如果没有明确需要,使用lazy='dynamic'
是这种情况下最简单的解决方案。subquery
推荐阅读
- terraform - 强制 Terraform 仅从本地磁盘安装提供程序,禁用 Terraform 注册表
- swift - 快速返回接口
- vue.js - 在 vue3+typescript devtools 属性不起作用
- sequelize.js - Sequelize,嵌套 Findall 并合并所有查找所有结果
- python - 无法使用 np.insert() 添加两个数组
- c++ - 无法从函数 c++ 返回数组
- angular - 角反应形式,输入错误:没有名称的表单控件的值访问器
- sql - 条件自联接 SQL Server
- postgresql - 每当在 Google Cloud SQL 中插入或更新数据时,是否可以向 Google Pub/Sub 发布消息?
- c++ - 模板化类数组的参数推导隐式初始化