flask_script的作用是可以通过命令行的形式来操作flask例如通过一个命令跑一个开发版本的服务器,设置数据库,定时任务等
我们首先需要安装flask_script
pip install flask_script
在flask中目前我没有用多少主要是用来初始化创建数据库来用,看我的入口文件代码
#!/usr/bin/python3 #coding:utf-8 from flask import Flask from flask_script import Manager,Server,prompt_bool from app.application import create_app from app.common import db app = create_app() manager = Manager(app) @manager.command def init_db(): if prompt_bool("Are you sure? You will init your database !"): db.create_all() @manager.command def drop_db(): if prompt_bool("Are you sure? You will delete your database !"): db.drop_all() manager.add_command("runserver", Server(host='127.0.0.1', port=5000, use_debugger=True)) if __name__ == "__main__": manager.run()
flask_script中的prompt_bool辅助函数来确认交互操作,个人感觉和js中的confirm函数一样的
我们执行创建数据的操作是这样的,注意我们还是需要创建一个空库,例如我的库名是blog,我们需要手工创建下,他是不会建库的,只会创建表,别忘记设置库的字符集
python manager.py init_db
如果我们需要删除数据库则是
python manager.py drop_db
启动flask,则是这样的
python manager.py runserver
我们这里看看执行创建数据库的操作以后如下图
实际我们也可以不使用运行文件来创建数据库或者一些其他的操作,单独将这些写入其他文件,然后执行写入的这个文件也是可行的,上面使用到的app_command添加命令和@command修饰命令,还有@option修饰符,这个修饰符主要以下例子来看下就清楚使用方法了,我的脚本名shell.py
#!/usr/bin/python3 #coding:utf-8 __author__ = "yang.su" '''flask shell 工具''' from flask import Flask from flask_script import Manager,prompt_bool from app.application import create_app app = create_app() manager = Manager(app) @manager.option("-id","--id",dest="id",help='input news id') @manager.option("-n","--num",dest="num",help='input number') def test(id, num): if prompt_bool("你确定要执行该操作?"): print(id, num) if __name__ == "__main__": manager.run()
我们可以直接执行
python shell.py test -id 2 -n 1000
执行的命令中,shell.py是脚本名字,test是脚本中函数的名字,option修饰符中的参数-id,--id都达标了参数的命令,dest代表接收-id传递的值的变量名字,可以直接传递到下面函数中作为参数,help是帮助信息,可以使用下面的命令查看帮助信息
python shell.py test -?
我们可以看到显示如下提示