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.pswp.cn/diannao/41705.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41705.shtml
英文地址,請注明出處:http://en.pswp.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/ 作者&…