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
版权声明:本文标题:The sqlalchemy extension was not registered to the current application.解决方案 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1728628214a1166768.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论