保持sql分页列表的顺序 [英] Keep the order of list in sql pagination

查看:171
本文介绍了保持sql分页列表的顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个插入顺序的列表。我想用相同的顺序对结果进行分页。正如你现在所看到的,输出将是一个不同的顺序。

  following_companies_list_data = Company.query.filter(Company.id.in _(['2','24','1' ,'7','373']))。paginate 
page per_page = 10 error_out = False我在公司:
print i.id

7
24
373
2
1

相关解决方案

/ 9475755/5341877>这个答案来自相关问题

  company_ids = ['2','24', '1','7','373'] 
order_expressions = [(Company.id == i).desc()for company_ids]
query = Company.query.filter(Company。 (* order_expressions)
following_companies_list_data = query.paginate(page,per_page = 10,error_out = F )

您也可以使用 idx 函数from intarray module

  from sqlalchemy import func 
company_ids = ['2','24','1','7','373']
query = ($ name,$ company_id)($ company_id)($ company_id))
following_companies_list_data = query.paginate(page,per_page = 10,error_out = False)


I have a list with an order of insertion. I want to paginate the results using the same order. As you can see currently the output will be a different order.

following_companies_list_data = Company.query.filter(Company.id.in_(['2', '24', '1', '7', '373'])).paginate(
            page, per_page=10, error_out=False)

companies = following_companies_list_data.items

for i in companies:
    print i.id

7
24
373
2
1

related question

解决方案

Solution based on this answer from related question

company_ids = ['2', '24', '1', '7', '373']
order_expressions = [(Company.id==i).desc() for i in company_ids]
query = Company.query.filter(Company.id.in_(company_ids)).order_by(*order_expressions)
following_companies_list_data = query.paginate(page, per_page=10, error_out=False)

Also you can use idx function from intarray module

from sqlalchemy import func
company_ids = ['2', '24', '1', '7', '373']
query = Company.query.filter(Company.id.in_(company_ids)).order_by(func.idx(company_ids, Company.id))
following_companies_list_data = query.paginate(page, per_page=10, error_out=False)

这篇关于保持sql分页列表的顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆