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

 废话不多说直接上代码:

功能,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 机器人对接效果

猜你喜欢

转载自blog.csdn.net/jxyk2007/article/details/131791899