Flask - выбор в реальном времени из базы данных - PullRequest
0 голосов
/ 06 августа 2020

У меня есть проект, в котором я сохраняю много данных в базе данных sqlite3. Я хочу создать простое приложение в Flask - отображение соответствующих данных из базы данных. Новые записи добавляются в базу данных каждые несколько минут - я хочу, чтобы это приложение обновляло sh автоматически. Я подготовил некоторую информацию об этом и нашел информацию, что это можно сделать каким-то образом, используя socketio Может ли flask framework отправлять данные в реальном времени с сервера в браузер клиента? или используя AJAX. Я пытался сделать что-то вроде этого: или Python Flask обновление даты в реальном времени , но мне это не удалось.

вот код, который я использую правильно сейчас:

from flask import Flask, request, render_template, session, redirect
import numpy as np
import pandas as pd
import sqlite3


con = sqlite3.connect(r'path')

app = Flask(__name__)

df = pd.read_sql('select * from table1', con)
df1 = pd.read_sql('select * from table2', con)


@app.route('/', methods=("POST", "GET"))
def html_table():
    return render_template('app.html',
                           tables=[df.to_html(classes='data1'),df1.to_html(classes='data2')],
                           titles=df.columns.values)

if __name__ == '__main__':
    app.run()

Шаблон:


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Title</title>
  </head>

  <body>

    {% for table in tables %}
            {{titles[loop.index]}}
            {{ table|safe }}
    {% endfor %}

</body>
</html>

в этом случае все отображается, но не работает в реальном времени. Я прошу инструкции или совета, как это сделать? Могу ли я как-нибудь использовать размещенные здесь ссылки? Это мое первое приложение в Flask, поэтому я не совсем знаю, как этого добиться.

1 Ответ

0 голосов
/ 07 августа 2020

Если у меня есть ваш вопрос, вы хотите загрузить данные, не загружая страницу. Как вы упомянули AJAX и socket.io, AJAX помогает получить данные на одной и той же странице, но требует перезагрузки. Он получает разные данные по одному и тому же маршруту, не переходя на другой маршрут. Socketio поможет вам в этом. Поскольку он обычно используется в приложениях для чата в реальном времени, поэтому нам не нужно обновлять sh страницу, чтобы увидеть сообщения. В flask используйте библиотеку flask_socketio, чтобы использовать ее, и вам также понадобится Javascript, включив их во-вторых, вы можете делать то, что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...