flask_script用法介绍和简单使用例子

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

我们这里看看执行创建数据库的操作以后如下图

{FF4A5C76-27F8-48C3-9C97-509BB64FB196}_20190506220611.jpg

实际我们也可以不使用运行文件来创建数据库或者一些其他的操作,单独将这些写入其他文件,然后执行写入的这个文件也是可行的,上面使用到的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

{FA51C396-801D-4259-842A-BC377622B8A8}_20190526220406.jpg

执行的命令中,shell.py是脚本名字,test是脚本中函数的名字,option修饰符中的参数-id,--id都达标了参数的命令,dest代表接收-id传递的值的变量名字,可以直接传递到下面函数中作为参数,help是帮助信息,可以使用下面的命令查看帮助信息

python shell.py test -?

我们可以看到显示如下提示

{DCFFAFFB-ECDE-481E-B3E5-CC7A1C1378F0}_20190526220821.jpg

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/662.html