flask工厂化项目结构db.create_all()无法创建表单?

flask项目工厂化无法使用db.create_all()创建数据库?修改
最近重新写一个小项目练手的时候发现了一个问题,我使用工厂化方法构建项目结构的时候不能使用db.create_all()来创建表,而且也不会报错,有另外一个自己写的博客也是按照这个结构写的,完全没有问题,不知道出现了什么问题。

现在的项目结构

v2-93d38312c088f1b71384c5c444d564f0_b.png
v2-fdf7ea461e4d815a69ff04df56e33957_b.png
v2-a422f46c80b241ab2bd4a8a220a2479e_b.png
v2-97e3673663f0aa3ba39ba3c076822a35_b.png

----------------------------------分割线------------------------------------------

另外一个同样结构的项目可以用db.create_all()创建数据库
v2-01c3ef82fa5c2fab8d405460b37d5232_b.png
v2-a15b11b239392c5e6a1ac4635874d963_b.png
v2-b5d82742b637c375944428961a26f6b8_b.png
v2-b209d78bc28d50a24cd94d11cb489748_b.png

希望大佬指点一下到底那里出现了问题?

阅读 6.9k
3 个回答

自己也找到了解决方法,在manager.py 下引入所有的models的类,

from app.modles import *

出现这个问题是因为你使用的姿势不对,核心问题的话就是没有 上下文

解决办法有两种:

  1. 自己补上上下文,方法为:

    @manager.command
    def create_db():
        with app.app_context():
            db.create_all()
  2. 用 Flask-Migrate

    乖乖照着文档抄过来,然后使用这两条语句即可。

    $ python manage.py db init
    $ python manage.py db upgrade
新手上路,请多包涵

这样用虽然对了,但是还是不是正确的姿势!

正确的姿势是使用 alembic !!!

你好好看看资料,用上这个好处大大地

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