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