首页 > 编程语言 >【Python】题库数据导出成Word文档

【Python】题库数据导出成Word文档

时间:2024-12-16 12:20:53浏览次数:4  
标签:COMMENT Word Python qa 密码 tag 题库 NULL

 

需求场景:

从题库解析的导入的数据,现在又需要导出成Word文档

 

数据库表结构:

CREATE TABLE `trn_ex_qabank` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `qa_type` char(1) NOT NULL COMMENT '考题类型',
  `qa_subject` text NOT NULL COMMENT '考题题目',
  `qa_answer` text COMMENT '考题答案',
  `qa_cate` varchar(32) DEFAULT NULL COMMENT '题库分类',
  `qa_tag` varchar(32) DEFAULT NULL COMMENT '题库标签',
  `qa_analy` text COMMENT '考题分析',
  `cre_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `cre_by` varchar(32) NOT NULL COMMENT '创建人',
  `upd_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `upd_by` varchar(32) NOT NULL COMMENT '更新人',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10388 DEFAULT CHARSET=utf8mb4 COMMENT='考试题库';

  

1、要求需要按找题库名进行分组处理

mysql> SELECT qa_tag FROM trn_ex_qabank WHERE qa_tag IS NOT NULL GROUP BY qa_tag
    -> ;
+-----------------------------------------------+
| qa_tag                                        |
+-----------------------------------------------+
| 【104题】证书认证系统_证书认证密钥管理系统    |
| 【105题】报告编制                             |
| 【114题】涉及密码的网络安全相关法律法规       |
| 【116题】测评过程                             |
| 【117题】测评工具使用                         |
| 【122题】风险分析                             |
| 【128题】智能密码钥匙                         |
| 【147题】杂凑密码                             |
| 【148题】密码应用测评要求                     |
| 【14题】随机数技术                            |
| 【152题】测评方法与实施                       |
| 【159题】量化评估                             |
| 【19题】测评内容                              |
| 【20题】智能IC卡密钥管理系统                  |
| 【223题】其他密码模块                         |
| 【229题】分组密码                             |
| 【236题】密码学基础知识                       |
| 【248题】密码应用基本要求                     |
| 【24题】安全认证网关                          |
| 【254题】公钥密码                             |
| 【25题】密钥管理技术                          |
| 【25题】电子标签芯片                          |
| 【26题】抗抵赖技术                            |
| 【272题】测评案例分析                         |
| 【28题】安全芯片                              |
| 【29题】签名验签服务器                        |
| 【32题】安全门禁系统                          |
| 【32题】智能IC卡                              |
| 【337题】密码法律法规与规范性文件             |
| 【33题】对称密钥管理产品                      |
| 【34题】动态令牌_动态令牌认证系统             |
| 【35题】PKI技术                               |
| 【35题】安全通信协议                          |
| 【38题】密码键盘                              |
| 【43题】区块链密码模块                        |
| 【43题】可信密码模块                          |
| 【47题-豪密自研】密码应用与安全性评估实务综合 |
| 【47题】测评对象选取                          |
| 【48题】时间戳服务器                          |
| 【49题】密码应用政策文件                      |
| 【4题】实体鉴别协议                           |
| 【51题】云服务器密码机                        |
| 【53题】电子文件密码应用系统                  |
| 【54题】PCI-E_PCI密码卡                       |
| 【54题】可信计算密码支撑平台                  |
| 【58题】服务器密码机                          |
| 【60题】SSL VPN网关                           |
| 【67题】方案密评                              |
| 【6题】身份认证技术                           |
| 【70题】安全电子签章系统                      |
| 【74题】党和国家关于密码工作的方针政策        |
| 【75题】IPSec VPN网关                         |
| 【7题】密钥交换协议                           |
| 【86题】金融数据密码机                        |
| 【88题】随机数发生器                          |
| 【8题】测评指标选择                           |
| 【99题】序列密码                              |
| 【9题】安全浏览器密码模块                     |
+-----------------------------------------------+
58 rows in set (0.14 sec)

mysql> 

  

2、代码实现:

import pymysql
from docx import Document

# MySQL数据库连接配置
db_config = {
    'host': '192.168.200.163',  # 替换为你的MySQL服务器地址
    'port': 3306,
    'user': 'zacper',  # 替换为你的MySQL用户名
    'password': 'Zacper@24pwd',  # 替换为你的MySQL密码
    'database': 'zacper',  # 替换为你的数据库名
    'charset': 'utf8mb4'  # 确保使用正确的字符集
}


if __name__ == '__main__':

    # 连接到MySQL数据库
    connection = pymysql.connect(**db_config)

    try:
        with connection.cursor() as qaTagCursor:
            # 执行SQL查询以获取题目
            sql = "SELECT qa_tag FROM trn_ex_qabank WHERE qa_tag IS NOT NULL GROUP BY qa_tag "  # 假设你的表名为questions
            qaTagCursor.execute(sql)
            results = qaTagCursor.fetchall()

        # 将查询结果添加到Word文档中
        for row in results:
            # 创建一个新的Word文档
            doc = Document()

            try:
                with connection.cursor() as qaCursor:
                    eachSql = f"SELECT * FROM trn_ex_qabank WHERE qa_tag = '{row[0]}' "
                    qaCursor.execute(eachSql)
                    qaResults = qaCursor.fetchall()

                    for qaRow in qaResults:
                        # 添加题目 qa_subject
                        doc.add_paragraph(f'{qaRow[2]}')

                        # 添加答案(可选)
                        doc.add_paragraph(f'答案: {qaRow[3]}')
                        doc.add_paragraph(f'解析: {qaRow[6]}')

                        # 添加一个空行作为分隔(可选)
                        doc.add_paragraph('')
            finally:

                # 保存Word文档
                doc.save(f'{row[0]}.docx')

    finally:
        # 关闭数据库连接
        connection.close()

    print("Word文档已成功创建并保存为questions.docx")

 

实现结果:

 

  

 

标签:COMMENT,Word,Python,qa,密码,tag,题库,NULL
From: https://www.cnblogs.com/mindzone/p/18609764

相关文章

  • 零基础学习人工智能—Python—Pytorch学习(十二)
    前言本文介绍使用神经网络进行实战。使用的代码是《零基础学习人工智能—Python—Pytorch学习(九)》里的代码。代码实现mudule定义首先我们自定义一个module,创建一个torch_test17_Model.py文件(这个module要单独用个py文件定义),如下:importtorch.nnasnnimporttorch.nn.fun......
  • 使用 Python 进行验证码图片识别
    首先,我们需要安装以下Python库:Pillow:用于图像处理。pytesseract:用于OCR(文字识别)。安装依赖你可以通过以下命令来安装必要的库:更多内容访问ttocr.com或联系1436423940bashpipinstallpillowpytesseract此外,pytesseract依赖于TesseractOCR引擎,确保你已经安装了Tess......
  • Python球球大作战
    系列文章序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python......
  • Python基础 day9 迭代生成,文件操作
    一:迭代器 iter特点:每次迭代得到的结果都是下一次迭代的初始值。迭代对象:字符串,列表,元组,集合,字典。可迭代对象的表现形式为内置了iter方法的数据,都属于可迭代对象。声明迭代器:方法一:        变量名=可迭代对象.__iter__()方法二:      ......
  • Python基础 day8 函数(三)
    一:闭包函数闭:封闭,指一个嵌套函数中的内层数据。包:用内层函数来操作外层函数得到的数据。闭包函数的作用:间接修改数据,保护私有数据不被轻易修改。闭包函数的必备条件:1.必须是一个嵌套函数2.内层数据必须操作外层函数数据(这个数据可以是变量或参数)3.外层函数必须返回内层......
  • 未公开JeecgBoot passwordChange 任意用户密码重置漏洞
       0x01产品概述    未公开JeecgBootpasswordChange任意用户密码重置漏洞通用描述管理和发布于一体的智能化平台,广泛应用于新闻、媒体和各类内容创作机构。该平台支持多终端、多渠道的内容分发,具备素材管理、编辑加工、智能审核等功能,通过AI技术辅助内容创作与数......
  • 毕业设计:python车牌识别系统 CNN算法 卷积神经网络网络 深度学习 tensorflow(源码)✅
    python车牌识别系统CNN算法卷积神经网络网络深度学习tensorflow(源码)1、项目介绍技术栈:Python语言、CNN算法、tensorflow和keras、深度学习、opencv、pyqt5图形界面2、项目界面(1)上传图像进行车牌识别1(2)上传图像进行车牌识别2(3)上传图像进行车牌识别3(4)上传视......
  • 毕业设计:python哔哩哔哩数据可视化分析系统 B站 bilibili数据 Flask框架 Echarts可视
    毕业设计:python哔哩哔哩数据可视化分析系统B站bilibili数据Flask框架Echarts可视化(源码)✅1、项目介绍技术栈:python语言、Flask框架、Echarts可视化、MySQL数据库、词云图、HTML2、项目界面(1)系统首页—数据概况(2)B站评论弹幕分析(3)B站作者分析(4)B站视频可视化分......
  • 使用Python实现两组数据纵向排序
    一、引言在数据分析和处理过程中,排序是一项非常常见的操作。排序操作能够让我们更清晰地理解数据,从而进行进一步的分析和处理。在Python中,排序操作通常可以通过内置函数或第三方库来实现。本文将详细讲解如何使用Python实现两组数据的纵向排序,并提供完整的开发思路和代码示例。......
  • 【Python应用】dnspython:一个功能强大且易于使用的Python DNS 工具包
    在网络编程领域,DNS(DomainNameSystem)的操作至关重要,而dnspython正是Python中一个功能强大的DNS工具包,它提供了对DNS协议的全面支持,简化了DNS相关的开发任务。本文将深入探讨dnspython的使用方法、特性以及一些实际应用案例。一、dnspython概述dnspython是一个功能完备......