Как разбить результаты поиска на SQL Server с помощью Flask - PullRequest
1 голос
/ 25 октября 2019

У меня есть приложение-колба, которое запрашивает базу данных сервера SQL для отображения результатов изображения на одной из веб-страниц. Проблема в том, что когда я получаю несколько результатов, загрузка страницы становится очень медленной из-за количества результатов. Я не могу найти какую-либо документацию по колбам, где с помощью SQL Server мы можем отображать фиксированное количество результатов на одной странице и отображать набор результатов на нескольких страницах.

Я использую библиотеку pymssql для получения результатови запрос выглядит примерно так:

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

Может кто-нибудь помочь мне с этим, пожалуйста?

1 Ответ

1 голос
/ 25 октября 2019

Я предполагаю, что вы не используете ORM.

Простой пример

index.html

Go To Page
{% for i in range(1,5) %}
  <a href="{{url_for('my_route', page = i)}}">{{i}}</a>
{% endfor %}

app.py

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)

Переход к 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...