Flask自定义命令

Flask自定义命令

一、老版Flask自定义命令

Flask 1.x 和 2.x 版本

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

  1. 安装所需库:

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

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

    python manage.py custom 123
    

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

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

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

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

    flask --app 文件名:app create-user bruce
    

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

    flask create-user lqz
    

三、flask自定义命令示例

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

  • 代码示例

    • from flask import Flask, current_app
      import click
      import pymysql
      from openpyxl import load_workbookapp = 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 类:

    from django.core.management.base import BaseCommandclass 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 manage.py 文件名
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怀念旧的Windows声音?以下是如何在Windows 11中恢复它们

如果你渴望旧的Windows声音,希望能在Windows 11上再次听到,那你就很幸运了。我们将向你展示如何下载必要的声音包并创建复古的声音方案。 如何获取旧Windows声音的声音包 你需要做的第一件事是下载一个包含旧Windows版本声音的声音包。此外,请确保它包含的每个声音都是WAV…

在 Vue 项目中使用 FullCalendar

1、先安装依赖包,根据自己的需求安装,建议使用cnpm安装,不然会很慢有时候会出现安装不上的情况。 npm i fullcalendar/vue --save npm i fullcalendar/core --save // 在月视图或日视图中操作事件 npm i fullcalendar/daygrid --save // 在…

记录discuz修改用户的主题出售价格

大家好,我是网创有方的站长,今天遇到了需要修改discuz的主题出售价格。特此记录下 方法很简单: 进入用于组-》选择论坛-》批量修改

【shell编程小项目】

目录 一、项目拓扑二、要求三、shell编程 一、项目拓扑 二、要求 环境准备: 准备两个虚拟机,按照环境配置好对应的 IP 地址和对应的主机名和 SSH 密钥登录在 workstation.exam.com 节点实现如下需求: 1、编写 Shell 脚本,要求代码…

0803实操-Windows Server系统管理

Windows Server系统管理 系统管理与基础配置 查看系统信息、更改计算机名称 网络配置 启用网络发现 Windows启用网络发现是指在网络设置中启用一个功能,该功能允许您的计算机在网络上识别和访问其他设备和计算机。具体来说,启用网络发现后&#xff…

Qt5.9.9 关于界面拖动导致QModbusRTU(QModbusTCP没有测试过)离线的问题

问题锁定 参考网友的思路: Qt5.9 Modbus request timeout 0x5异常解决 网友认为是Qt的bug, 我也认同;网友认为可以更新模块, 我也认同, 我也编译了Qt5.15.0的code并成功安装到Qt5.9.9中进行使用,界面拖…

Laravel文件存储:云端数据管理的艺术

标题:Laravel文件存储:云端数据管理的艺术 Laravel框架提供了一个强大的文件存储抽象层,允许开发者以一致的方式与本地磁盘或云存储服务(如Amazon S3)进行交互。文件存储系统简化了文件上传、下载、移动和删除等操作&…

Java面试之Java多线程常见面试题

1、什么是线程? 定义:线程是程序中的执行路径,是操作系统进行调度的基本单位。它允许程序并发执行多个任务,提高程序的响应速度和资源利用率。 2、为什么需要线程? 1、提高并发性:线程允许程序同时执行多…

Mybatis原生使用

一、MyBatis初次使用 2.1 环境搭建步骤 MyBatis 的 API : https://mybatis.org/mybatis-3/zh/getting-started.html 1.引入依赖包 2.准备核心配置件 db.properties drivercom.mysql.cj.jdbc.Driver urljdbc:mysql://123.57.206.19:3306/demo?useUnicodetrue&am…

如何选择最佳的照片和视频恢复软件

您是否意外从硬盘或 USB 卡中删除了照片或视频?最好的视频和照片恢复软件可以帮到您!如果您一直在寻找最好的照片恢复软件,那么您来对地方了。本文将分享一些帮助您找到最佳视频恢复软件的提示。 重要提示:事实:媒体文…

知识图谱嵌入

文章目录 知识图谱嵌入的概念知识图谱嵌入的优点知识图谱嵌入的主要方法知识图谱嵌入的应用知识图谱嵌入的概念 为了解决前面提到的知识图谱表示的挑战,在词向量的启发下,研究者考虑如何将知识图谱中的实体和关系映射到连续的向量空间,并包含一些语义层面的信息,可以使得在…

【LabVIEW学习篇 - 3】:程序结构——顺序结构、for循环、while循环

文章目录 顺序结构案例一案例二 for循环while循环 顺序结构 LabVIEW中的顺序结构是一种常用的控制结构,用于按顺序执行程序的不同部分。顺序结构在程序中按照从左到右的顺序依次执行各个子结构,类似于传统的文本编程语言中的顺序执行。 案例一 案例一…

JAVA的线性表数据结构的超详解

目录 顺序表的顺序存储结构 1.数组 2.顺序表 顺序表的声明,存储操作以及效率分析 1.泛型类 2.顺序表的插入操作 3. 顺序表的删除操作 4.顺序表查询操作 5.顺序表的应用 线性表的链式存储结构 单链表的基本操作 顺序表的顺序存储结构 数组是实现顺序存储…

随手记录: Ubuntu NVIDIA显卡驱动安装后 屏幕亮度无法调节 无法连接外显示器等问题

背景 一句话:简单记录帮身边人装系统发现 GPU和外接显示器的无法连接,同时亮度无法调节等新问题 设备型号: 联想笔记本:ThinkBook 16p Gen2CPU:AMD Ryzen 7 5800HGPU:RTX 3060 问题描述及流程&#xff…

类继承-多继承虚继承

#include<iostream> using namespace std; class A1 { public:int a 10;}; class A2 { public:int b 20; }; class B :public A1, public A2 { public:int c 30; }; int main(){B b;cout << b.a << b.b << b.c << endl;return 0; } 如果基类…

STM32-HAL-SDIO-(sd卡的识别,整理后的版本)

1STM32Cube操作 1-1配置时钟 1-2配置调试端口 1-3配置uart 1-4配置SDIO 选择数据传输引脚个数 需改配置&#xff08;图中改了两处&#xff0c;选中的和最后一个&#xff09; 1-5打开DMA 传输方向改为图中的&#xff08;由内转向外设&#xff09;在改图中的一次读写的大小 1-…

图像处理调试软件推荐

对于图像处理的调试&#xff0c;使用具有图形用户界面&#xff08;GUI&#xff09;且支持实时调整和预览的图像处理软件&#xff0c;可以大大提高工作效率。以下是几款常用且功能强大的图像处理调试软件推荐&#xff1a; ImageJ/FijiMATLABOpenCV with GUI LibrariesNI Vision …

Java中关于构造代码块和静态代码块的解析

构造代码块 特点&#xff1a;优先于构造方法执行,每new一次,就会执行一次 public class Person {public Person(){System.out.println("我是无参构造方法");}{System.out.println("我是构造代码块"); //构造代码块} }public class Test {public stati…

面试专区|【54道Spring Cloud高频题整理(附答案背诵版)】

什么是Spring Cloud&#xff1f; Spring Cloud是一个基于Spring Boot的开源框架&#xff0c;它提供了在分布式系统中集成各种服务治理功能的工具&#xff0c;如配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态等。其主要目…

【推荐图书】深入浅出Spring Boot 3.x

推荐原因 这部SpringBoot3.x经典之作&#xff0c;时隔六年迎来重磅升级&#xff01; 适合java开发相关读者 购买链接 商品链接&#xff1a;https://item.jd.com/14600442.html 介绍 书名&#xff1a;深入浅出Spring Boot 3.x ISBN&#xff1a;978-7-115-63282-1/ 作者&…