文章内容

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


参考资料:Command Line Interface


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - flask cli 如何调用shell 数据库更新

分享到:

发表评论

评论列表