在声明这是重复项之前,我已经搜索了无数错误,但找不到适合我的解决方案。
我有一个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
答案 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对象。