Flask-sqlalchemy DB应该在哪里初始化?

一开始我把

db = SQLAlchemy(app)

放在Init里,可是后来发现了问题 会出现2013错误
应该是连接过时了。

所以应该放在before request里?
可是这样models里就不能import db了。。

现在直接放在了models里

阅读 5.6k
2 个回答

产生一个app以后,初始化一下就好了,db就直接放在另外一个文件里面

# db.py
db = SQLAlchemy()

#app.py
from db import db
def create_app(config=None, app_name=None, modules=None):
    if app_name is None:
        app_name = DEFAULT_APP_NAME
    app = Flask(app_name)
    configure_app(app, config)
    db.init_app(app)
    return app

接着app创建以后初始化, 我放在__init__里面从来没有出现过连接过时的问题。db是一个连接对象,放在哪里和连接过时没有关系。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题