python中的Flask-Script模块

关于Flask-Script

Flask-Script用来生成shell命令;为在Flask里编写额外的脚本提供了支持。

  • 这包括运行一个开发服务器,一个定制的Python命令行,用于执行
    初始化数据库、定时任务和其他属于web应用之外的命令行任务的脚本。
  • Flask-Script和Flask本身的工作方式类似。只需要定义和添加能从命令行中
    被Manager实例调用的命令即可。

Flask-Script的用处

Flask的Web开发服务器支持很多启动设置选项,但只能在脚本中作为参数传给app.run()函数。
这种方式很不方便,传递设置选项的理想方式是使用命令行参数。
Flask-Scrip就是这么一个Flask扩展,为Flask程序添加一个命令行解析器。
Flask-Script自带了一组常用选项,而且还支持自定义命令。

Flask-Script的配置

# coding=gbk
from flask_script import Manager
from flask import Flask
app = Flask(__name__)
# Manager类将追踪所有的在命令行中调用的命令和处理过程的调用运行情况;
# configure your app
manager = Manager(app)

if __name__ == "__main__":
    # 将启动Manger实例接收命令行中的命令。
    manager.run()

python中的Flask-Script模块

添加自定义shell命令

例如:对数据库进行操作

# coding=gbk
# -*- coding: <encoding name> -*-
from flask_sqlalchemy import  SQLAlchemy
from flask_script import Manager
from flask import Flask
import pymysql

app = Flask(__name__)
pymysql.install_as_MySQLdb()
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]/Todo'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# app.config.from_pyfile('./config.py')
db = SQLAlchemy(app)
manager = Manager(app)
@manager.command
def dbinit():
    """数据库初始化信息"""
    db.drop_all()
    db.create_all()
    print('数据库初始化成功')

if __name__ == "__main__":
    # 将启动Manger实例接收命令行中的命令。
    manager.run()

python中的Flask-Script模块