これは私が私のviews.pyファイルで、これまでに書いたコードです:フラスコルートで同じフラスコSQLAlchemyのクエリセットへのアクセス
from flask import Flask, jsonify
from app import db
from models import Sites
app = Flask(__name__)
app.config.from_pyfile('config.py')
db.init_app(app)
@app.route('/site-list')
def site_list():
site_table = Sites.query.all()
return jsonify({a.name: a.id for a in site_table})
@app.route('/site-geo')
def site_geo():
site_geo = Sites.query.all()
return jsonify({a.name: a.lat + ", " + a.long for a in site_geo})
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8080, passthrough_errors=True)
だから私はそのデシベルのinit_app()メソッドを使用して(と信じてフラスコ - sqlalchemyオブジェクト)私は、アプリケーションに割り当てられた新しいFlaskインスタンスを作成しました。オブジェクトdbは、app.py(データを生成してデータベースに挿入する目的)からインポートされます。 app.pyとdb.pyはデータベースURIを指定するのと同じconfig.pyファイルを共有します。
ご覧のとおり、Sites.query.all()を使用して2つのFlaskルート内で自分自身を繰り返しました。このコードは現在、目的のJSONレスポンスを返すうえで問題なく動作します。しかし、関数/ FlaskルートからFlaskルートの外にSites.query.all()の割り当てを移動しようとすると、ランタイムエラーが発生します。アプリケーションはdbインスタンスに登録されておらず、アプリケーションは現在のコンテキストにバインドされていません。
私はすべてのフラスコ経路を通ってクエリーセットにアクセスすることができるので、自分自身を繰り返し続ける必要はありませんか?
をpy' __init __ ''でSQLALCHEMY'コールを入れて、 ''そこdb.init_app(アプリ)を使用して初期化します。保存するには
。 http://flask-sqlalchemy.pocoo.org/2.1/api/#configurationを参照してください。 – 0decimal0