1、flask_script介绍
Flask-Script的作用是可以通过命令行的形式来操作Flask。例如通过命令跑一个开发版本的服务器、设置数据库,定时任务等。要使用Flask-Script,可以通过pip install flask-script安装最新版本
2、通过命令行调用manage.py中的方法(@manage.command)
第一步:新建manage.py文件
第二步:写入代码
from flask_script import Managerfrom flask_sqlalchemy_dome import appmanage = Manager(app)@manage.commanddef index():print("hello")if __name__ == '__main__':manage.run()
代码解读:
导入Manager方法
from flask_script import Manager
从py文件中导入app, 保证当前文件夹为根目录(ptcharm设置的标签:make directory as)
from flask_sqlalchemy_dome import app
建立与app的连接
manage = Manager(app)
写一个方法:
@manage.commanddef index():print("hello")
调用:
if __name__ == '__main__':manage.run()
第三步:在命令行中进行调用
1、如果是不同的盘符,就先进行盘符的调整
2、通过cd 文件所在路径,进入文件
3、通过python py文件名 方法 的方式进行运行
3、通过命令行进行传参(@manage.option(-x, —xxx, dest=xxx))
代码写入:
from flask_script import Managerfrom flask_sqlalchemy_dome import appmanage = Manager(app)@manage.option('-n', '--name', dest='name')@manage.option('-u', '--url', dest='url')def hello(name, url):return f"欢迎 {name} {url}"if __name__ == '__main__':manage.run()
代码解释:
@manage.option('-n', '--name', dest='name')# '-n':通过-n 参数的方式进行传参 python manage.py hello -n gongzhujun ,就能将gongzhujun传给name# '--name':这是-n的全称,python manage.py hello --name gongzhujun,效果与-n传参效果一致#(@manage.option('-n', dest='name')如果不写--name的话,就无法通过这种方式传参了)# dest='name',可以将name理解为形参
4、一个案例:通过命令行定义超级管理员
1、建立config.py存放相关配置
USERNAME = "root"PASSWORD = "147258"DATABASE = "gongzhujun"PORT = 3306HOSTNAME = "127.0.0.1"ENGINE = f"mysql+mysqlconnector://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"SQLALCHEMY_DATABASE_URI = ENGINESQLALCHEMY_TRACK_MODIFICATIONS = False
注意此处:SQLALCHEMY_DATABASE_URI = ENGINE的写法,只要进行普通的赋值就行
2、建立flask_sqlalchemy_dome.py
from flask import Flaskfrom flask_sqlalchemy import SQLAlchemy# 导入config配置文件import configapp = Flask(__name__)# 通过from_object()方法,引用config文件app.config.from_object(config)db = SQLAlchemy(app)# 设置模型,模型也可以单独放一个文件class Administrator(db.Model):__tablename__ = "admin"id = db.Column(db.Integer, primary_key=True, autoincrement=True)name = db.Column(db.String(10))email = db.Column(db.String(10))db.create_all()if __name__ == '__main__':app.run(debug=True)
3、建立flask_script_admin.py
from flask_script import Manager# 导入模, 与数据库连接的db, 与flask的appfrom flask_sqlalchemy_dome import app, Administrator, db# 与命令行建立联系manage = Manager(app)# 定义相关参数@manage.option('-n', '--name', dest='name')@manage.option('-e', '--email', dest='email')def admin(name, email):administrator = Administrator(name=name, email=email)db.session.add(administrator)db.session.commit()if __name__ == '__main__':manage.run()
命令行输入:
数据库显示:
