SQLAlchemy返回带有limit/off的意外结果

2024-04-29 06:50:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个查询,它执行多个左连接,然后执行一个限制/偏移量以进行分页。我的问题是,limit/offset似乎应用于所有连接执行之后返回的total行数。我希望将限制/偏移量应用于从查询返回的ORM实例的数量。在

下面是一个查询示例:

result = session.query(A)\
.outerjoin(B)\
.outerjoin(C)\
.order_by(A.id)\
.offset(0).limit(100).all()

因此,如果A通过联接表B与C有一对多的关系,我可能会在A中每行得到N行。有什么特别的事情需要我做,以便对实例计数应用限制/偏移量,而不是对联接生成的行数应用限制/偏移量吗?在


Tags: 实例id示例数量bysessionormorder
1条回答
网友
1楼 · 发布于 2024-04-29 06:50:26

这就是SQL的工作原理。This article关于SQL语句中操作顺序的信息可能会引起关注。您可以在子查询中偏移和限制,然后根据该值进行连接。^{}在这种特殊情况下很方便,特别是因为它可以自动别名:

result = session.query(A)\
    .order_by(A.id)\
    .offset(0).limit(100)\
    .from_self()\
    .outerjoin(B)\
    .outerjoin(C)\
    .all()

相关问题 更多 >