文章内容
2018/9/8 18:24:27,作 者: 黄兵
flask cli 如何调用shell 数据库更新
最近flask 升级到1.0版本了,之后尝试使用Flask CLI。
具体操作如下:
1、首先启用虚拟环境和程序发现:
*unix:
启用虚拟环境:
. venv\scripts\activate
启用程序发现:
$ export FLASK_APP=hello $ flask run
Windows:
启用虚拟环境:
venv\scripts\activate
启用程序发现:
> set FLASK_APP=hello > flask run
2、打开shell:
$ flask shell Python 3.6.2 (default, Jul 20 2017, 03:52:27) [GCC 7.1.1 20170630] on linux App: example Instance: /home/user/Projects/hello/instance >>>
3、执行数据更新:
(venv) E:\Python\flasky>flask db init Error: Directory migrations already exists (venv) E:\Python\flasky>flask db migrate -m "add info collection" INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL.
如果无法更新,可以删除alembic_version表中的数据。
DELETE FROM alembic_version;
最后再次执行,可以看到执行成功了,具体截图如下:

(venv) E:\Python\flasky>flask db migrate -m "add info collection" INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.autogenerate.compare] Detected added table 'InfoCollection' INFO [alembic.autogenerate.compare] Detected added index 'ix_InfoCollection_timestamp' on '['timestamp']' Generating E:\Python\flasky\migrations\versions\7719c617de60_add_info_collection.py ... done
更新数据库:

(venv) E:\Python\flasky>flask db upgrade INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade -> 929aa19428fa, add collection
如果出现这个错误:
sqlalchemy.exc.CompileError: VARCHAR requires a length on dialect mysql
具体解决方案可以参考这篇文章:sqlalchemy.exc.CompileError: VARCHAR requires a length on dialect mysql
黄兵个人博客原创。
评论列表