1、flask_script介绍

Flask-Script的作用是可以通过命令行的形式来操作Flask。例如通过命令跑一个开发版本的服务器、设置数据库,定时任务等。要使用Flask-Script,可以通过pip install flask-script安装最新版本

2、通过命令行调用manage.py中的方法(@manage.command)

第一步:新建manage.py文件
第二步:写入代码

  1. from flask_script import Manager
  2. from flask_sqlalchemy_dome import app
  3. manage = Manager(app)
  4. @manage.command
  5. def index():
  6. print("hello")
  7. if __name__ == '__main__':
  8. manage.run()

代码解读:
导入Manager方法

  1. from flask_script import Manager

从py文件中导入app, 保证当前文件夹为根目录(ptcharm设置的标签:make directory as)

  1. from flask_sqlalchemy_dome import app

建立与app的连接

  1. manage = Manager(app)

写一个方法:

  1. @manage.command
  2. def index():
  3. print("hello")

调用:

  1. if __name__ == '__main__':
  2. manage.run()

第三步:在命令行中进行调用
1、如果是不同的盘符,就先进行盘符的调整
2、通过cd 文件所在路径,进入文件
3、通过python py文件名 方法 的方式进行运行
image.png

3、通过命令行进行传参(@manage.option(-x, —xxx, dest=xxx))

代码写入:

  1. from flask_script import Manager
  2. from flask_sqlalchemy_dome import app
  3. manage = Manager(app)
  4. @manage.option('-n', '--name', dest='name')
  5. @manage.option('-u', '--url', dest='url')
  6. def hello(name, url):
  7. return f"欢迎 {name} {url}"
  8. if __name__ == '__main__':
  9. manage.run()

代码解释:

  1. @manage.option('-n', '--name', dest='name')
  2. # '-n':通过-n 参数的方式进行传参 python manage.py hello -n gongzhujun ,就能将gongzhujun传给name
  3. # '--name':这是-n的全称,python manage.py hello --name gongzhujun,效果与-n传参效果一致
  4. #(@manage.option('-n', dest='name')如果不写--name的话,就无法通过这种方式传参了)
  5. # dest='name',可以将name理解为形参

命令行演示
image.png

4、一个案例:通过命令行定义超级管理员

1、建立config.py存放相关配置

  1. USERNAME = "root"
  2. PASSWORD = "147258"
  3. DATABASE = "gongzhujun"
  4. PORT = 3306
  5. HOSTNAME = "127.0.0.1"
  6. ENGINE = f"mysql+mysqlconnector://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"
  7. SQLALCHEMY_DATABASE_URI = ENGINE
  8. SQLALCHEMY_TRACK_MODIFICATIONS = False

注意此处:SQLALCHEMY_DATABASE_URI = ENGINE的写法,只要进行普通的赋值就行
2、建立flask_sqlalchemy_dome.py

  1. from flask import Flask
  2. from flask_sqlalchemy import SQLAlchemy
  3. # 导入config配置文件
  4. import config
  5. app = Flask(__name__)
  6. # 通过from_object()方法,引用config文件
  7. app.config.from_object(config)
  8. db = SQLAlchemy(app)
  9. # 设置模型,模型也可以单独放一个文件
  10. class Administrator(db.Model):
  11. __tablename__ = "admin"
  12. id = db.Column(db.Integer, primary_key=True, autoincrement=True)
  13. name = db.Column(db.String(10))
  14. email = db.Column(db.String(10))
  15. db.create_all()
  16. if __name__ == '__main__':
  17. app.run(debug=True)

3、建立flask_script_admin.py

  1. from flask_script import Manager
  2. # 导入模, 与数据库连接的db, 与flask的app
  3. from flask_sqlalchemy_dome import app, Administrator, db
  4. # 与命令行建立联系
  5. manage = Manager(app)
  6. # 定义相关参数
  7. @manage.option('-n', '--name', dest='name')
  8. @manage.option('-e', '--email', dest='email')
  9. def admin(name, email):
  10. administrator = Administrator(name=name, email=email)
  11. db.session.add(administrator)
  12. db.session.commit()
  13. if __name__ == '__main__':
  14. manage.run()

命令行输入:
image.png
数据库显示:
image.png