flask web 部署到 SAE 哪里执行 db.create_all()呢?

是这样的,Flask web 开发提到的数据库创建,用的是执行命令行

python manage shell
from manage import db
db.crate_all()

很多人部署,用的是导入SQL文件的取巧办法。
我想知道,如何在代码里实现数据库的创建呢?
这句代码该放在哪里?
manage.py
__init__.py

阅读 5.5k
3 个回答

我找到一种方式,不算好,不过可以用。

#app\__init__.py对应位置加入
def create_app(config_name):
    app = Flask(__name__)
    ...
    db.init_app(app)
    with app.app_context():
        # Extensions like Flask-SQLAlchemy now know what the "current" app
        # is while within this block. Therefore, you can now run........
        db.create_all()
    return app

推荐Flask-Migrate,数据库迁移使用,少走弯路

我个人是用SQL导入的,看到这个问题,想到一个方案:利用before_first_reques请求钩子函数,在处理第一个请求之前执行创建表的工作。

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