简介:
Flask-Script插件为在Flask里编写额外的脚本提供了支持。包括了一个开发服务器,一个定制的Python命令行,用于执行初始化数据库、定时任务和其他属于web应用之外的命令行任务的脚本
一、安装
pip intsall flask-script
二、基本结构
from flask_script import Manager manager = Manager(app) """代码书写函数""" if __name__ == '__main__': manager.run()
三、命令定义
1.@manager.command:执行命令 python manager.py 函数名
from flask_script import Manager manager = Manager(app) # 定义命令1:python manager.py greet(函数名) ===> 你好 @manager.command def greet(): print("你好") if __name__ == '__main__': manager.run()
2.@manager.option(-命令简称,--命令全称,dest=‘参数’):执行命令 python manager.py 函数名 -命令简称1 参数1 -命令简称2 参数2...
from flask_script import Manager manager = Manager(app) # @manager.option(命令简写,命令全称,dest='传入的参数'),几个参数写几个option # 定义命令2:python manager.py add_user -n aaa -a 18 ===> aaa 18 @manager.option('-n','--name',dest='name') @manager.option('-a','--age',dest='age') def add_user(name,age): print(name,age) if __name__ == '__main__': manager.run()
3.add_command("子命令",其他命令py文件):执行命令 python manager.py 子命令 (命令方式1/命令方式2)
创建一个db_script.py的文件写子命令代码:
from flask_script import Manager db_manager = Manager() # python manager.py db init @db_manager.command def init(): print("迁移仓库创建完毕") @db_manager.command def revision(): print("迁移脚本生成成功") @db_manager.command def upgrade(): print("提交数据库")
manager.py中使用add_command
from flask_script import Managerfrom db_script import db_manager manager = Manager(app) # 定义命令3: 添加一个子命令 manager.add_command("db",db_manager) if __name__ == '__main__': manager.run()
四、小实验
实现:命令行操作flask数据库
Flask
from flask import Flask from flask_sqlalchemy import SQLAlchemy import config app = Flask(__name__) app.config.from_object(config) db = SQLAlchemy(app) class User(db.Model): __tablename__ = "user" id = db.Column(db.Integer,primary_key=True,autoincrement=True) username = db.Column(db.String(50),nullable=False) email = db.Column(db.String(50),nullable=False) # db.create_all() @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
HOSTNAME = '127.0.0.1' PORT = 3306 DATABASE = 'db_demo' USERNAME = 'root' PASSWORD = '123456' # 链接数据库的字符串,固定格式 DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format( username = USERNAME, password = PASSWORD, host = HOSTNAME, port = PORT, db = DATABASE, ) SQLALCHEMY_DATABASE_URI = DB_URI SQLALCHEMY_TRACK_MODIFICATIONS = False DEBUG = True TEMPLATES_AUTO_RELOAD=True
Flask-script
from flask_script import Manager from app import app,User,db manager = Manager(app) # python manager.py add_sql_user -u aaa -e 895025041@qq.com # 小实验:命令操作flask的数据库 @manager.option('-u','--username',dest='username') @manager.option('-e','--email',dest='email') def add_sql_user(username,email): u = User(username = username,email = email) db.session.add(u) db.session.commit() if __name__ == '__main__': manager.run()