您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Flask和SQLAlchemy,应用程序未在实例上注册

Flask和SQLAlchemy,应用程序未在实例上注册

答案在这里http ://flask-sqlalchemy.pocoo.org/latest/api/#configuration

请参阅有关以下内容的部分:

两者之间的区别在于,在第一种情况下,诸如create_all()和drop_all()之类的方法将始终有效,但在第二种情况下,必须存在flask.Flask.request_context()。

这里有更多信息:http : //flask-sqlalchemy.pocoo.org/latest/contexts/

如果这一切令人困惑(可能是,因为它是在谈论Flask的高级功能),则简短的简短版本是db.init_app(app)更改app对象,但不更改db对象中的任何内容。这是有目的的,因为可能有不止一个人在app飞来飞去,并且db可能必须与所有人交谈。(我说这是高级功能。)

因此,当您在db.create_all()没有实时请求的情况下打电话(这会创建一个正在运行的全局变量app)时,它不知道要连接的内容和炸弹。这就是错误的含义。

在您的情况下,我将把sqlAlchemy调用放回去__init__.py并传递app给它,这是最简单的方法

db = sqlAlchemy(app)

或者保持原样,然后在第一个请求之前运行安装程序:

@app.before_first_request
def create_database():
     db.create_all()

希望对您有所帮助!如果您遇到其他问题,请告诉我。

Python 2022/1/1 18:31:49 有561人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶