Flask自定义命令

news/2024/7/8 12:09:56 标签: flask, python, 后端

Flask自定义命令

一、老版Flask自定义命令

Flask 1.x 和 2.x 版本

在Flask的老版本中,可以通过 flask-script 扩展来添加自定义命令。

  1. 安装所需库:

    python">pip3 install Flask-Script==2.0.3
    pip3 install flask==1.1.4
    pip3 install markupsafe=1.1.1
    
  2. 在 Flask 应用中创建一个 Manager 对象,并使用装饰器定义自定义命令:

    python">from flask_script import Manager
    manager = Manager(app)
    
    @manager.command
    def custom(arg):
        print(arg)
    
  3. 运行自定义命令:

    python">python manage.py custom 123
    

二、Flask 新版本(2.x 及以后)

Flask 新版本通过内置的 click 模块支持自定义命令,不再需要 flask-script

  1. 使用 click 装饰器定义命令:

    python">from flask import Flask
    import click
    
    app = Flask(__name__)
    
    @app.cli.command("create-user")
    @click.argument("name")
    def create_user(name):
        print(name)
    
  2. 运行自定义命令:

    python">flask --app 文件名:app create-user bruce
    

    如果你的脚本文件名为 app.py,则可以简化命令为:

    python">flask create-user lqz
    

flask_63">三、flask自定义命令示例

  • 要求:制定一个flask命令,导入一个excel,把数据同步到 user表中

  • 代码示例

    • python">from flask import Flask, current_app
      import click
      import pymysql
      from openpyxl import load_workbook
      
      app = Flask(__name__)
      
      @app.cli.command("import_excel")
      @click.argument("excel_path")
      def import_excel(excel_path):
       """将指定路径的 Excel 文件数据导入到 user 表中"""
       # 加载 Excel 文件
       workbook = load_workbook(filename=excel_path)
       sheet = workbook.active
      
       # 连接数据库
       connection = pymysql.connect(host='localhost',
                                    port=3306,
                                    user='root',
                                    password='000',
                                    database='test',
                                    cursorclass=pymysql.cursors.DictCursor)
      
       try:
           with connection.cursor() as cursor:
               for row in sheet.iter_rows(min_row=2, values_only=True):  # 假设第一行为表头
                   # 构造插入语句,假设 Excel 文件中有 'user'
                   sql = "INSERT INTO user (name) VALUES (%s)"
                   cursor.execute(sql, row)
               connection.commit()
       finally:
           connection.close()
      
       print(f"Excel 数据导入完成,文件:{excel_path}")
      
      
      if __name__ == '__main__':
       app.run()
      

四、Django自定义命令

Django允许在应用中创建自定义命令,步骤如下:

  1. 在应用目录下创建 management/commands 文件夹结构。

  2. commands 文件夹中创建一个新的 Python 文件,该文件的名字将是你的命令名称。

  3. 在该文件中编写自定义命令的代码,继承 BaseCommand 类:

    python">from django.core.management.base import BaseCommand
    
    class Command(BaseCommand):
        help = '命令提示'
    
        def add_arguments(self, parser):
            parser.add_argument('path', nargs='*', type=str)
    
        def handle(self, *args, **kwargs):
            print('开始导入')
            print(args)
            print(kwargs)
    
  4. 使用自定义命令:

    python">python manage.py 文件名
    


http://www.niftyadmin.cn/n/5537242.html

相关文章

oracle存储结构-----逻辑存储结构(表空间、段、区、块)

文章目录 oracle存储结构图(逻辑存储物理存储)oracle逻辑存储结构图逻辑存储结构、表空间、段、区、数据块的关系:1、数据 块(block)---逻辑存储最小单位2、 数据区(extent)--存储空间分配和回收…

文件扫描pdf怎么弄?5个简易高效的文件扫描方法

在繁忙的工作中,我们常常需要将纸质文件快速转换为电子文档,以便于编辑、存储或分享。 无论是合同、报告还是笔记,将这些纸质文件转换为Word格式,不仅能提高工作效率,还能确保信息的安全备份。然而,面对市…

python conda查看源,修改源

查看源 conda config --show-sources 修改源 可以直接vim .condarc修改源,

LabVIEW汽车ECU测试系统

开发了一个基于LabVIEW开发的汽车发动机控制单元(ECU)测试系统。该系统使用了NI的硬件和LabVIEW软件,能够自动执行ECU的功能测试和性能测试,确保其在不同工作条件下的可靠性和功能性。通过自动化测试系统,大大提高了测…

C#用反射机制调用dll文件的字段、属性和方法

1、创建dll文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace CLStudent {public class Student{//字段public string Name = "Tom";//属性public double ChineseScore {get; s…

Administrators就最高了???system是什么??本地用户提权内网学习第三天 你知道uac是什么??

我们今天来说说本地用户提权的操作,我们在有webshell过后我们要进行进一步的提权操作,要不然对我们后期的内网渗透会有一些阻碍的操作。比如说我们使用mimikatz来进行抓取密码,就不能够成功。 Administrators与system的区别 我们来说说Admin…

LeetCode 1517, 205, 124

目录 1517. 查找拥有有效邮箱的用户题目链接表要求知识点思路代码 205. 同构字符串题目链接标签简单版思路代码 优化版思路代码 124. 二叉树中的最大路径和题目链接标签思路代码 1517. 查找拥有有效邮箱的用户 题目链接 1517. 查找拥有有效邮箱的用户 表 表Users的字段为us…

Vue3--Watch、Watcheffect、Computed的使用和区别

Vue3–Watch、Watcheffect、Computed的使用和区别 一、watch 1.功能 watch 用于监听响应式数据的变化,并在数据变化时执行特定的回调函数。适合在响应式数据变化时执行异步操作或复杂逻辑。 2.主要特点 指定数据监听:可以精确地监听一个或多个响应式…