Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用Flask对SQL Server搜索结果进行分页_Python 3.x_Flask_Pymssql - Fatal编程技术网

Python 3.x 如何使用Flask对SQL Server搜索结果进行分页

Python 3.x 如何使用Flask对SQL Server搜索结果进行分页,python-3.x,flask,pymssql,Python 3.x,Flask,Pymssql,我有一个flask应用程序,它正在查询SQL server数据库,以便在其中一个网页上显示图像结果。问题是当我得到多个结果时,由于结果的数量太多,页面加载变得非常慢。我找不到任何flask文档,其中使用SQL Server可以在一页上显示固定数量的结果,并在多页中显示结果集 我正在使用pymssql库获取结果,查询如下所示: "SELECT [Id],[user], [post_text], [media_url], [media_type]FROM [{}].[dbo].[SM_POSTS]

我有一个flask应用程序,它正在查询SQL server数据库,以便在其中一个网页上显示图像结果。问题是当我得到多个结果时,由于结果的数量太多,页面加载变得非常慢。我找不到任何flask文档,其中使用SQL Server可以在一页上显示固定数量的结果,并在多页中显示结果集

我正在使用pymssql库获取结果,查询如下所示:

"SELECT [Id],[user], [post_text], [media_url], [media_type]FROM [{}].[dbo].[SM_POSTS] WHERE Id = {}".format(DB,id)

有人能帮我一下吗?

我假设你没有使用ORM

  • 您可以(SQL Server 2012+)

  • 使用查询参数控制页码,然后使用页码生成SQL查询

简单示例

index.html

转到
http://127.0.0.1:5000/my_route?page=2
将给出以下查询

SELECT [Id],[user], [post_text], [media_url], [media_type] FROM [mydb].[dbo].[SM_POSTS] WHERE Id = 1 ORDER BY [post_text] ASC OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY

谢谢你的回复!不幸的是,我的数据库在SQLServer2008中,我想我将无法使用您的解决方案
from flask import Flask, render_template, request

app = Flask(__name__)


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/my_route')
def my_route():
    page_no = int(request.args.get('page', 1))
    results_per_page = 10
    offset = (page_no-1) * results_per_page
    my_db = 'mydb'
    my_id = 1
    query = """
         SELECT [Id],[user], [post_text], [media_url], [media_type] FROM
        [{}].[dbo].[SM_POSTS] WHERE Id = {}
        ORDER BY [post_text] ASC
        OFFSET  {} ROWS
        FETCH NEXT {} ROWS ONLY
    """.format(my_db, my_id, offset, results_per_page)
    # I am just returning the query itself
    return query


if __name__ == "__main__":
    app.run(debug=True)
SELECT [Id],[user], [post_text], [media_url], [media_type] FROM [mydb].[dbo].[SM_POSTS] WHERE Id = 1 ORDER BY [post_text] ASC OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY