fastadmin+python+mysql +wxbot实现万能模糊查询(和chatgpt一起完成的)

news2024/11/23 8:24:36

 废话不多说直接上代码:

功能,fastadmin后台管理这些机房服务器的信息,wxbot 通过/指令+任意字段的信息查询 让wxbot去数据库里查询相关的信息,在通过wx发送给你。 

 1.创建数据库

CREATE TABLE fa_databank (
    ID INT AUTO_INCREMENT PRIMARY KEY,
    Platform VARCHAR(255) COMMENT '平台名称',
    Type VARCHAR(255) COMMENT '系统类型',
    CPU INT COMMENT 'CPU核心数量',
    Memory_GB INT COMMENT '内存大小 (以GB为单位)',
    System_Disk_GB INT COMMENT '系统硬盘大小 (以GB为单位)',
    Data_Disk_GB INT COMMENT '数据硬盘大小 (以GB为单位)',
    GPU_Memory_GB INT COMMENT 'GPU内存大小 (以GB为单位)',
    Operating_System VARCHAR(255) COMMENT '操作系统类型',
    Login_Account VARCHAR(255) COMMENT '登录账户名称',
    VLAN INT COMMENT '虚拟局域网编号',
    Network_Card_IP VARCHAR(255) COMMENT '网卡的IP地址',
    Mapping_Relationship VARCHAR(255) COMMENT 'IP或者设备的映射关系',
    PartitionInfo VARCHAR(255) COMMENT '分区信息',
    Bastion_Host_Account VARCHAR(255) COMMENT '堡垒机账户名称',
    Bastion_Host_Password VARCHAR(255) COMMENT '堡垒机密码',
    Responsible_Person VARCHAR(255) COMMENT '负责人名称',
    Database_Information VARCHAR(255) COMMENT '数据库连接信息',
    URL VARCHAR(255) COMMENT '访问地址',
    Access_Info VARCHAR(255) COMMENT '访问信息',
    Installed_Service_Name VARCHAR(255) COMMENT '安装服务的名称',
    Path_Address VARCHAR(255) COMMENT '路径地址'
);

 2.fastadmin管理界面,导入信息

3.模糊查询函数,并且做了脱敏

import pymysql

def query_information(value):
    # 数据库连接参数,根据实际情况修改
    db = pymysql.connect("localhost", "username", "password", "database")
    cursor = db.cursor()

    # 注意:这里列出了所有的字段,根据实际情况修改
    fields = ['Platform', 'Type', 'CPU', 'Memory_GB', 'System_Disk_GB', 'Data_Disk_GB', 'GPU_Memory_GB', 
              'Operating_System', 'Login_Account', 'VLAN', 'Network_Card_IP', 'Mapping_Relationship', 
              'PartitionInfo', 'Bastion_Host_Account', 'Bastion_Host_Password', 'Responsible_Person', 
              'Database_Information', 'URL', 'Access_Info', 'Installed_Service_Name', 'Path_Address']

    # 映射字段英文名称和中文备注
    field_map = {
        'Platform': '平台',
        'Type': '类型',
        'CPU': 'CPU',
        'Memory_GB': '内存(GB)',
        'System_Disk_GB': '系统硬盘(GB)',
        'Data_Disk_GB': '数据硬盘(GB)',
        'GPU_Memory_GB': '显存(GB)',
        'Operating_System': '操作系统',
        'Login_Account': '登录账号',
        'VLAN': 'vlan',
        'Network_Card_IP': '网卡IP',
        'Mapping_Relationship': '映射关系',
        'PartitionInfo': '分区信息',
        'Bastion_Host_Account': '堡垒机账号',
        'Bastion_Host_Password': '堡垒机密码',
        'Responsible_Person': '负责人',
        'Database_Information': '数据库信息',
        'URL': 'URL',
        'Access_Info': '访问信息',
        'Installed_Service_Name': '安装服务名称',
        'Path_Address': '路径地址',
    }

    sensitive_fields = ['Login_Account', 'Bastion_Host_Password', 'Database_Information', 'Access_Info']

    # 构造SQL查询语句
    sql = "SELECT * FROM fa_databank WHERE " + " OR ".join([f"{field} LIKE %s" for field in fields])

    result_str = ''  # 用于存储结果的字符串
    try:
        cursor.execute(sql, [f"%{value}%"]*len(fields))  # 为每个字段提供值
        results = cursor.fetchall()
        if results:
            for row in results:
                # 获取字段名并将结果转换为字典
                columns = [column[0] for column in cursor.description]
                row_dict = dict(zip(columns, row))
                for field, val in row_dict.items():
                    if field in sensitive_fields:
                        val = '*' * len(str(val))  # 将敏感信息替换为星号
                    result_str += f"{field_map.get(field, field)}: {val}\n"
                result_str += "-"*50 + "\n"  # 分隔线
        else:
            result_str = "系统无记录"
    except Exception as e:
        result_str = f"Error occurred: {e}"
    finally:
        cursor.close()
        db.close()

    return result_str

# 使用函数查询数据
print(query_information('192.168'))  # 只输入部分IP地址也可以查询到相关信息
print(query_information('推流'))  # 只输入部分平台名称也可以查询到相关信息

4.wxbot 机器人对接效果

 

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

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

相关文章

简单认识MySQL数据库日志和数据的备份恢复

文章目录 Mysql 备份与还原一、数据备份的重要性二、数据库备份类型1 、物理备份2 、逻辑备份 三、常见的备份方法1、 物理冷备2、 专用备份工具 mysqldump 或 mysqlhotcopy3、 启用二进制日志进行增量备份3.4 第三方工具备份 四、MySQL完全备份1、简介2、优点:3、缺…

避雷!7月有4本SCIE期刊被剔除!(附目录下载)

2023年7月SCI、SSCI期刊目录更新 2023年7月17日,科睿唯安更新了WOS期刊目录,继上次6月WOS期刊目录剔除3本SCIE&SSCI期刊之后,此次7月更新又有4本SCIE期刊发生变动,其中有3本期刊被踢出SCIE数据库,1本期刊更改了名…

通过new FormData提交简单数据

通过new FormData提交简单数据 效果示例图代码 效果示例图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style type"text/css">* {padding: 0px;margin: 0px;box-sizing: border-…

CSS 渐变边框及动画

转载请注明出处&#xff0c;点击此处 查看更多精彩内容 用 CSS 实现渐变边框及动画&#xff0c;下面对关键点进行解释说明&#xff0c;查看完整代码及预览效果请 点击这里。 简单说明原理&#xff1a;使用伪元素 ::before 绘制一个渐变色&#xff0c;然后使用伪元素 ::after 绘…

详解Windows安装分布式版本控制系统git

文章目录 前言下载安装相关链接 前言 git是一个分布式版本控制软件&#xff0c;最初由Linux创作者Linus Torvalds创作&#xff0c;并于2015年以GPL许可协议发布。git易于学习&#xff0c;占用空间小&#xff0c;性能却快如闪电&#xff0c;可以快速、 高效的管理从小到大的项目…

STM32 HAL/STD库驱动HC-SR04测距

STM32 HAL/STD库驱动HC-SR04测距 ✨说明:本文不介绍HC-SR04原理。 &#x1f4cc;相关篇《STM32F103VCDS18B20温度hc-sr04超声波测距I2C OLED显示》 &#x1f33f;HAL库实现方法比较简易&#xff0c;只需配置2个IO引脚&#xff1a;一个配置为输入&#xff0c;一个配置为输出即可…

【正点原子STM32连载】第六十四章 UCOSII实验2-信号量和邮箱摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第六…

【C++】多线程交替打印奇偶数

目录 版本1 双信号量版 版本二 单信号量版 版本三 信号量版 共享资源是100个数字&#xff08;一个计数器的 由两个进程争抢完成&#xff09; 首先访问临界资源&#xff08;对计数器操作&#xff09;是肯定的要加锁的&#xff0c;交替打印肯定要用条件变量来互相唤醒 互相锁死…

计及需求侧响应日前—日内两阶段鲁棒备用优化(matlab代码)

目录 1 主要内容 日前计划模型 日内调整模型 不确定集建模 2 部分代码 3 程序结果 1 主要内容 该程序复现文章《计及需求侧响应日前—日内两阶段鲁棒备用优化》&#xff0c;以6节点系统为例&#xff0c;综合考虑风电出力不确定性与电力设备 N-k强迫停运&#xff0c;增强电…

创建型模式 - 原型模式

概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。 具体原型类&#xff1a;实现抽象原型类的 clone() 方…

如何用3D格式转换工具HOOPS Exchange读取颜色和材料信息?

作为应用程序开发人员&#xff0c;非常希望导入部件的图形表示与它们在创作软件中的外观尽可能接近。外观可以在每个B-Rep面的基础上指定&#xff0c;而且&#xff0c;通过装配层次结构的特定路径可以在视觉外观上赋予父/子覆盖。HOOPS ExchangeHOOPS Exchange可捕获有关来自各…

创建型模式 - 建造者模式

概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某个对象的构建过程复杂的情况。 由于实现了构建和装配的解耦。…

虾皮、Lazada爆款打造计划,自养号测评补单技术成重要的运营手段【无标题】

在如今的电商平台中&#xff0c;虾皮和lazada是东南亚地区主要的电商平台&#xff0c;平台广告是它的主要利润来源之一。然而&#xff0c;随着大量卖家涌入东南亚市场&#xff0c;商家之间的竞争也日益激烈&#xff0c;高额的广告投入并没有带来预期的效果。为了提高产品在平台…

【26】SCI易中期刊推荐——计算机人工智能(中科院4区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

【视频+文字讲解】C++那些事之彻底搞懂STL HashTable

C那些事之彻底搞懂STL HashTable C那些事之彻底搞懂STL HashTable1.常用容器 1.1 接口层2.HashTable原理 2.1 _Hash_node结构2.2 hashtable实现2.3 如何确定桶&#xff1f;2.4 如何确定在桶中的位置&#xff1f;3.Rehash 3.1 计算新桶大小3.2 判断是否需要rehash3.3 rehash 最近…

Github实时数据分析与可视化训练营火热开启!免费领取5000元云上资源

此次训练营内容基于GitHub Archive公开数据集&#xff0c;通过DataWorks将GitHub中的项目、行为等20多种事件类型数据实时采集至Hologres进行分析&#xff0c;同时使用DataV内置模板&#xff0c;快速搭建实时可视化数据大屏&#xff0c;从开发者、项目、编程语言等多个维度了解…

vscode 使用ssh进行远程开发 (remote-ssh)

介绍 visual studio code remote - ssh 可以通过ssh连接远程主机、虚拟机&#xff0c;打开远程文件夹&#xff0c;并利用vscode 的插件优势进行远程开发、调试等。 步骤 一、配置环境 因为remote-ssh 的ssh连接是基于openssh实现的&#xff0c;以及后续我们需要使用生成ss…

手把手教你搭建SpringCloud项目(七)集成Consul服务注册中心

一、了解Consul 这篇文章学习另外一个服务注册中心Consul&#xff0c;那什么是Consul&#xff1f; Consul是一个服务网格&#xff08;微服务间的 TCP/IP&#xff0c;负责服务之间的网络调用、限流、熔断和监控&#xff09;解决方案&#xff0c;它是一个一个分布式的&#xff…

[PCIE体系结构导读]PCIE总结(二)

PMCR&#xff08;Power Management Capabilities Register&#xff09;和PMCSR&#xff08;Power Management Control and Status Register) PMCR寄存器由16位组成&#xff0c;其中所有位和字段都是只读的。该寄存器的主要木得是记录当前PCIe设备的物理属性&#xff0c;系统软件…

vue2的 element 表格单元格合并

<template><div><el-table show-summary :summary-method"getSummaries" :span-method"objectSpanMethod" :data"tableData" row-key"id" ref"tableDom" border><el-table-column label"序号&quo…