admin管理员组

文章数量:1612099

flask实现创建数据库表,处理The sqlalchemy extension was not registered to the current application报错的解决文案

from flask_script import Manager
from flask_migrate import MigrateCommand, Migrate
from demo5.app import app
from exts import db
from models import User

manager = Manager(app)

migrate = Migrate(app, db)

manager.add_command('db', MigrateCommand)

if __name__ == "__main__":
    manager.run()
模板命令三连
python manage.py db init   
python manage.py db migrate   
python manage.py db upgrade 

第一条命令成功

(venv) E:\venv\demo5>python manage.py db init
Creating directory E:\venv\demo5\migrations ...  done
Creating directory E:\venv\demo5\migrations\versions ...  done
Generating E:\venv\demo5\migrations\alembic.ini ...  done
Generating E:\venv\demo5\migrations\env.py ...  done
Generating E:\venv\demo5\migrations\README ...  done
Generating E:\venv\demo5\migrations\script.py.mako ...  done
Please edit configuration/connection/logging settings in 'E:\\venv\\demo5\\migrations\\alembic.ini' before proceeding.
 

第二条报错

AssertionError: The sqlalchemy extension was not registered to the current application.  Please make sure to call init_app() first.
 

 

不说我怎么寻找问题的根源了,以前成功过,所以我换前面成功的demo去试也是一样,通过查资源,追本逐源,依稀记得上次成功时的场景,那时候app还在运行着的,这次没有运行,而且在同上查到了说先到初始化app

所以我在manager = Manager(app) 前面加上一行代码db.init_app(app)

 

from flask_script import Manager
from flask_migrate import MigrateCommand, Migrate
from demo_pro.app import app
from exts import db
from models import User

db.init_app(app)

manager = Manager(app)

migrate = Migrate(app, db)

manager.add_command('db', MigrateCommand)

if __name__ == "__main__":
    manager.run()

然后删除migrations文件,重新命令三连

果然成功了,唉~ 两小过去了,收工吃饭

(venv) E:\venv\demo5>python manage.py db init
Creating directory E:\venv\demo5\migrations ...  done
Creating directory E:\venv\demo5\migrations\versions ...  done
Generating E:\venv\demo5\migrations\alembic.ini ...  done
Generating E:\venv\demo5\migrations\env.py ...  done
Generating E:\venv\demo5\migrations\README ...  done
Generating E:\venv\demo5\migrations\script.py.mako ...  done
Please edit configuration/connection/logging settings in 'E:\\venv\\demo5\\migrations\\alembic.ini' before proceeding.

(venv) E:\venv\demo5>python manage.py db migrate
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.autogeneratepare] Detected added table 'artics'
Generating E:\venv\demo5\migrations\versions\132e0ebfd038_.py ...  done

(venv) E:\venv\demo5>python manage.py db upgrade
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> 132e0ebfd038, empty message

(venv) E:\venv\demo5>                                                                                                                            

本文标签: 解决方案ExtensionSQLALCHEMYregisteredapplication