3

MySQL データベースからのデータを表示する Web ページ (HTML と jQuery を使用して構築) があります。Flask を使用して HTML をデータベースに接続しています。ただし、データベースは 15 分ごとに更新されます (別の Python スクリプトを使用)。現在、flask サーバーを停止し、データベースを更新してから Flask を再起動して Web ページを更新しています。私の質問は次のとおりです。

フラスコサーバーを停止せずにバックグラウンドで MySQL データベースを更新する方法はありますか? AJAX と CRON の概念について読みましたが、それらをフラスコで非同期に使用する方法を理解できません。

注: 私は Web アプリケーションの初心者であり、これはクライアント側とサーバー側を接続する最初のプロジェクトです。どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

11

あなたはおそらく次のようなことをしているでしょう:

from flask import Flask, render_template
from yourMySqlLibrary import connect_to_mysql

conn = connect_to_mysql()
# This is only executed when you start the script
data = conn.execute("SELECT * FROM MySemiRegularlyUpdatedTable")

app = Flask(__name__)

@app.route("/")
def view_data():
    return render_template("view_data.html", data=data)

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

その場合、解決策は、接続とクエリ呼び出しコントローラーに移動して、ページにアクセスするたびにデータベースが再クエリされるようにすることです。

@app.route("/")
def view_data():
    # Removed from above and placed here
    # The connection is made to the database for each request
    conn = connect_to_mysql()
    # This is only executed on every request
    data = conn.execute("SELECT * FROM MySemiRegularlyUpdatedTable")
    return render_template("view_data.html", data=data)

このように、データが更新されたときにビューが更新されます。データへの変更を取得するためだけにサーバーを再起動する必要はありません。

于 2013-02-15T02:34:17.303 に答える