'未找到应用程序。在视图函数内部工作或推送'RuntimeError:找不到应用程序

时间:2020-03-29 18:30:31

标签: flask sqlalchemy flask-sqlalchemy google-cloud-sql

在声明这是重复项之前,我已经搜索了无数错误,但找不到适合我的解决方案。

我有一个Flask Web应用程序,我是sql炼金术师,以促进与Google sql数据库的连接。使用db.create_all()函数创建应用程序时,需要创建与应用程序相对应的表。但是,每次这样做,我都会收到错误消息:“'未找到应用程序。要么在视图函数中进行工作,要么进行推送' RuntimeError:找不到应用程序。在视图函数内部工作或推送应用程序上下文”

这是我当前拥有的代码。如果您能提供任何帮助,我们将不胜感激:

db = SQLAlchemy()

def create_app():
  app = Flask(__name__)

  app.config.from_object(config)

  db.init_app(app)

  login_manager = LoginManager()
  login_manager.login_view = 'auth.login'
  login_manager.init_app(app)

  from .models import User

  @login_manager.user_loader
  def load_user(user_id):
    return User.query.get(int(user_id))

  from .auth import auth as auth_blueprint
  app.register_blueprint(auth_blueprint)

  from .main import main as main_blueprint
  app.register_blueprint(main_blueprint)

  with app.app_context():
      db.create_all()

  return app

1 个答案:

答案 0 :(得分:1)

尝试更换

with app.app_context():
    db.create_all()

使用

app.app_context().push()
db.create_all()

有关更多信息,请参阅flask_sqlalchemy contexts docs

顺便说一句,您正在使用一个新创建的SQLAlchemy类,该类不知道必须将哪种结构应用于新的DB。您应该使用通过模型from .models import User, db创建的db对象。