如何在sqlalchemy中的大表上应用LIMIT/OFFSET,同时获得中间结果[请阅读下面的详细信息]?

San*_*ram 7 python mysql sorting filtering sqlalchemy

我想对包含大量记录的表执行3次操作:(1)filter(基于搜索查询)(2)order_by(在asc/desc中的单个列上)和(3)slice(对于给定offsetlimit值).

在执行这些操作时,我需要中间结果(在过滤/排序后获得),以找出满足给定过滤器查询的记录数(将此信息发送到前端).

现在,我使用FILTERORDER_BYSQLAlchemy中来获得中间结果,然后在列表上应用切片.如何使用sqlalchemy实现相同的功能FILTER,ORDER_BY并将SLICE过滤/排序后的记录数作为子结果一起使用?

我现在使用的sqlalchemy查询如下:

result = session.\
         query(Customer).\
         filter(Customer.name.like('%' + filter_query + '%') | Customer.email.like('%' + filter_query + '%') | Customer.partner.like('%' + filter_query + '%')).\
         order_by(asc(getattr(Customer, sorting_column_name))).\
         all()
Run Code Online (Sandbox Code Playgroud)

cyb*_*rra 6

result = session.\
     query(Customer).\
     filter(Customer.name.like('%' + filter_query + '%') | Customer.email.like('%' + filter_query + '%') | Customer.partner.like('%' + filter_query + '%')).\
     order_by(asc(getattr(Customer, sorting_column_name))).\
     slice(offset,limit).\
     all()
Run Code Online (Sandbox Code Playgroud)