【问题标题】:how to set pagination in SQL query as per page?如何在 SQL 查询中按页面设置分页?
【发布时间】:2020-03-05 09:45:07
【问题描述】:

如何在 SQL 查询中根据页面设置分页,我尝试使用 django 默认分页,但它在我的代码中不起作用,我使用 SQL 原始查询而不是 ORM 直接获取数据。我认为另一种方法是使用 SQL 查询 LIMIT 或 OFFSET 设置分页,但我在搜索下一页时不知道 url-endpoint。

class Order_ListAPIView(APIView):

    def get(self,request,format=None):

        if request.method == 'GET':
            cur,conn = connection()
            order_query = ''' SELECT * FROM orders'''
            order_detail_query = ''' SELECT * FROM order_details'''

            with conn.cursor(MySQLdb.cursors.DictCursor) as cursor:

                cursor.execute(order_query)
                order_result = cursor.fetchall()
                order_data = list(order_result)

            ...
             ... #rest_code
              ...


            return Response({"order_data":order_data},status=status.HTTP_200_OK)
        else:
            return Response(status=status.HTTP_400_BAD_REQUEST)

【问题讨论】:

标签: mysql sql django django-rest-framework


【解决方案1】:

我对 Django 不太熟悉,但正如您所说,您自己使用 MySQL 从数据库中获取原始数据,因此要设置分页应该像在 MySQL 查询中添加 LIMIT $offset, $perpage 一样简单。 ..

SELECT * FROM order_details LIMIT 0, 5;

例如,此查询将为您提供第 1 页,每页 5。要到达第 5 页,每页 5 个,它是 LIMIT 4*5, 5 = LIMIT 25, 5。如果您想以每页 10 个的形式进入第 37 页,则应为 LIMIT 36*10, 10 = LIMIT 360, 10

这应该可以解决 MySQL 部分的分页问题。您需要设置 var 来确定来自用户的 pageperpage,可能来自 GET 参数。

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2012-05-24
    • 2011-08-07
    • 2022-08-05
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多