我正在尝试对从我的表获取的数据进行分页(来自Azure上的远程数据库),如下面的代码所示:
import json
import pyodbc
# Includes other imports
def query_db(query):
"""
Function that queries the required table in the DB
"""
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server}; \
SERVER=db.database.windows.net; \
DATABASE=DB; UID=id; PWD=pwd')
cnxn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
cur = cnxn.cursor()
cur.execute(query)
# Fetches the entire table ## This is causing the lagg
r = [dict( (cur.description[i][0], value) for i, value in enumerate(row) ) for row in cur.fetchall()]
cur.connection.close()
return(r)
@api_view(['GET'])
def get(request):
paginator = PageNumberPagination()
my_query = query_db("select * from Client_Table")
result_page = paginator.paginate_queryset(my_query, request)
json_output = json.dumps(result_page, cls=DjangoJSONEncoder)
return paginator.get_paginated_response(json_output)
这里的问题是:我首先获取整个表,然后对其分页。如何在不必获取整个表的情况下对分页? 注意:我没有使用Django模型
我建议从数据库调用过滤后的数据,因为它是分页的,您可以使用skip和limit逻辑调用API来解析下一个或preciding数据。在
例如 在开始时,您需要前10行,然后从应用程序传递param 跳过次数=0和限制=10
^{pr2}$现在,如果单击next并想要下10行,只需传递skip=10&limit=10的参数
类似地,您也可以通过传递限制来更改每页的结果。在
根据您的代码,我希望您使用的是GET方法
相关问题 更多 >
编程相关推荐