这是我在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)
所以我相信,通过使用DB的init_app()方法(一个flask-sqlalchemy对象)我创建了一个新的Flask实例分配给应用程序。对象db是从app.py(其目的在于生成数据并将其插入到数据库中)导入的。 app.py和db.py共享指定数据库URI的相同config.py文件。
正如你所看到的,我用Sites.query.all()重复了两次Flask路由。该代码目前正常工作返回所需的JSON响应。但是,当我尝试从一个函数/ Flask路径中将Sites.query.all()的赋值移到Flask路径的外部时,它会给出运行时错误:应用程序未在db实例上注册,且没有绑定到当前上下文的应用程序。
我怎样才能访问所有我的烧瓶路线的查询集,这样我就不必一直重复自己了?
把'SQLALCHEMY'呼叫'__init __ py'和使用'db.init_app(APP)'有初始化。请参阅http://flask-sqlalchemy.pocoo.org/2.1/api/#configuration – 0decimal0