微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sqlalchemy 限制/偏移量返回不正确的分页结果

如何解决Sqlalchemy 限制/偏移量返回不正确的分页结果

我有一个正确的查询

    my_query = session.query(Task).join(
    Job,Job.id == Task.job_id
    ).join(
        User,User.id == Task.member
    )

在此之后我想实现一些排序:

        sort_func = 'asc' if '-' not in data['sort'] else 'desc'
        sort_key = data['sort'].replace('-','')
        sort_map = {
            'task_name': Task.name,'created_at': Task.created_at,}
        query = query.order_by(getattr(sort_map[sort_key],sort_func)())

假设这个查询返回以下结果:

   [{id: 1,task_name: 'Metallica'},{id: 2,task_name: 'soad'},{id: 3,task_name: 'elasticsearch'},{id: 4,task_name: 'bee'},{id: 5,task_name: 'one'},{id: 6,task_name: 'football'},{id: 7,task_name: 'mars'},{id: 8,task_name: 'hello'},{id: 9,task_name: 'apple'},{id: 10,task_name: 'car'},{id: 11,task_name: 'ford'}];

在此之后我想实现分页(使用动态偏移):

query = query.offset(offset).limit(5)

我希望在第一次请求后我的回复是上面列表中的前五项:

   [{id: 1,task_name: 'one'}]

在第二次请求之后:

[{id: 6,task_name: 'car'}]

但是对于第二页,我从第一页获得了一些项目。 例如:

    [{id: 2,{id: 1,task_name: 'Metallica'}]

有人知道为什么偏移/限制会扭曲我的结果吗? 或者这可能不是偏移/限制问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。