mysql - 如何在 SQL 查询中按页面设置分页?
问题描述
如何在 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)
解决方案
我对 Django 不太熟悉,但正如您所说,您是使用 MySQL 从数据库中自己获取原始数据,因此设置分页应该像添加LIMIT $offset, $perpage
到 MySQL 查询一样简单......
SELECT * FROM order_details LIMIT 0, 5;
例如,此查询将为您提供 PAGE 1,每页 5。要以每页 5 个进入第 5 页,它是LIMIT 4*5, 5
= LIMIT 25, 5
。如果您想以每页 10 个页面进入第 37 页,则为LIMIT 36*10, 10
= LIMIT 360, 10
。
这应该解决 MySQL 部分的分页问题。您需要设置 vars 来确定两者page
和perpage
来自用户,可能来自 GET 参数。
推荐阅读
- c# - C# WPF AvalonDock 在重新加载布局后丢失数据绑定
- python - 环境变量不适用于 GCP-Windows 10
- python - 找到满足条件的单元格的平均值
- sonarqube - Sonarqube 是否能够分析 mulesoft 项目?
- android - RecyclerViewLayoutManager 空对象引用
- php - 正则表达式将每行捕获到唯一的捕获组,其中行数不同,并且某些数据可能丢失
- javascript - Why setting variables to itself make things work?
- visual-studio - DirectX 图形工具下载受阻
- python-3.x - 使用 matplotlib 生成 3d 正弦波动画
- python - 保存和加载 keras 子类模型