创建蓝本后使用flask-migrate无法创建迁移脚本的问题
2016-08-08 10:54
537 查看
背景:
我是一开始没有使用migrate这个功能,后来学到《Flask web开发》第八章后觉得不能迁移数据库太不方便了,就想回来学习下flask-migrate的使用问题:
但是这时候我的hello.py已经使用蓝本分离成manage.py了,关于数据库的信息位于models.py里面,若是直接像书上一样先输入python manage.py db init创建迁移仓库,显示的还正常:
Creating directory C:\Users\kai\PycharmProjects\practice\myflasky\migrations ... done Creating directory C:\Users\kai\PycharmProjects\practice\myflasky\migrations\versions ... done Generating C:\Users\kai\PycharmProjects\practice\myflasky\migrations\alembic.ini ... done Generating C:\Users\kai\PycharmProjects\practice\myflasky\migrations\env.py ... done Generating C:\Users\kai\PycharmProjects\practice\myflasky\migrations\README ... done Generating C:\Users\kai\PycharmProjects\practice\myflasky\migrations\script.py.mako ... done Please edit configuration/connection/logging settings in 'C:\\Users\\kai\\PycharmProjects\\practice\\myflasky\\migrations\\alembic.ini' before proceeding.
但是之后再输入python manage.py db upgrade创建迁移脚本后,就不对了:
(base) C:\Users\kai\PycharmProjects\practice\myflasky>python manage.py db migrate -m "initial migration" INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.env] No changes in schema detected.
缺少
Detected added table 'roles' Detected added table 'users'
这两行,进入migrations文件夹中的versions发现的确是空的,证明创建脚本失败
求解过程:
先是在网上查了一圈,参考了mrchi和杜志鹏的回答,了解到应该是flask-migrate没有侦测到我的db数据导致的,但是我的manage.py中是有from app import create_app, db from app.models import User, Role
和
def make_shell_context(): return dict(app=current_app, db=db, User=User, Role=Role, Permission=Permission) manager.add_command("shell", Shell(make_context=make_shell_context)) manager.add_command('db', MigrateCommand)
借鉴杜志鹏的评论,尝试cd到app中使用python models.py db migrate -m “initial migration”不过直接报错了。
接着参考mrchi的问题中的描述,我在cmd中输入命令前输python manage.py shell进入交互,再输入
from app import db from app.models import User, Role
来导入模型,在输入创建脚本指令,不过结果还是一样的。
期间我还在segment上提了问题,但是结果也还不是很满意
最终解决办法
在经历前面的折腾,想到我的代码和操作应该是没有问题的,只可能是一些前提错了,于是我就想到了INFO [alembic.env] No changes in schema detected.
这句话,既然说没有变化你就不创建,那我就把你(sqlite)删了,看你还说不说没有变化,于是。。。
(base) C:\Users\kai\PycharmProjects\practice\myflasky>python manage.py db migrate -m "inital migration" INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.autogenerate.compare] Detected added table 'roles' INFO [alembic.autogenerate.compare] Detected added index 'ix_roles_default' on '['default']' INFO [alembic.autogenerate.compare] Detected added table 'users' INFO [alembic.autogenerate.compare] Detected added index 'ix_users_email' on '['email']' INFO [alembic.autogenerate.compare] Detected added index 'ix_users_username' on '['username']' Generating C:\Users\kai\PycharmProjects\practice\myflasky\migrations\versions\c08a64ca29fc_inital_migration.py ... done (base) C:\Users\kai\PycharmProjects\practice\myflasky>python manage.py db upgrade INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade -> c08a64ca29fc, inital migration
成功了!
不过顿时觉得自己像个逗比。。。
相关文章推荐
- python使用flask-migrate迁移数据库时遇到的问题
- 动态创建文本文件并写入数据 避免正由另一进程使用,因此该进程无法访问该文件。的问题
- android 创建系统级的Dialog时,无法使用Home关闭的问题
- 解决VS2013使用MySQL无法创建ADO.NET实体数据类型的问题
- 使用idea创建web项目后无法创建Java文件夹的问题的解决办法
- 使用 Flask-Migrate 实现数据库迁移
- c++test使用qt中的 mingw 创建pthread_create程序无法运行的问题
- vmware虚拟机 centos创建完整克隆后 网卡无法使用问题解决
- (原创)使用TimeStamp控制并发问题[示例]-创建后台数据库脚本
- 关于vs2013创建WINDOWS程序无法使用多字符集的问题
- 使用webView创建的项目相册相机无法使用或是会重新跳到webView,像是重新刷新一样的问题
- SERVER2008IIS服务器不能正常使用(由于扩展配置问题而无法提供您请求的页面,如果该页面是脚本...)
- 关于使用ADT-22.6.0版本,Eclipse中无法创建AVD的问题
- ubuntu 创建新的用户和用户组 以及新用户无法使用bash的问题
- Struts2使用命名空间后JSP页面无法加载javascript脚本的问题
- windows下写的shell脚本,到linux下无法使用的问题
- 将编写的脚本加入系统路径内,却无法使用的问题
- 使用linux客户端执行shell脚本创建数据库初始化数据库中文乱码问题
- 使用eclipse创建多文件java工程出现找不到或无法加载主类问题解决
- 数据库(三)为Python shell添加新的功能和使用Flask-Migrate实现数据库迁移