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 (将#修改为@)