测试造数,excel转insert语句

目录

  • excel转sql的insert语句
    • 一、背景
    • 二、直接上代码

excel转sql的insert语句

一、背景

在实际测试工作中,需要频繁地进行测试造数并插入数据库验证,常规的手写sql语句过于浪费时间,为此简单写个脚本,通过excel来造数,快速生成insert语句,以此提高测试效率。

二、直接上代码

  1. 代码如下:
import pandas as pd
import pyperclip
import traceback
import osclass SourceData:def __init__(self, path, sheet_name, engine=None):# 通过pandas读取excel文件的指定sheet页,过滤掉为空的表头self.df = pd.DataFrame(pd.read_excel(path, sheet_name=sheet_name, dtype='string', na_filter=False,usecols=lambda x: not x.startswith('Unnamed'), engine=engine))self.data = self.df.iloc[:, 1:]  # 读取数据主体self.table_name = self.df['table_name'][0]  # 读取要造数的表名def to_sql(self):keys = '("' + '","'.join(list(map(lambda x: x.strip(), self.data.columns.to_list()))) + '")'  # 拼接sql语句的keys部分table_name = self.table_namevalues = ','.join(map(lambda x: "('" + "','".join(x) + "')", self.data.to_records(index=False).tolist()))  # 拼接sql语句的values部分sql = ' '.join(['INSERT INTO', table_name, keys, 'VALUES', values]) + ';'  # 构造insert语句print(sql)  # 打印到交互窗口pyperclip.copy(sql)  # 复制到剪贴板,以便直接进行粘贴if __name__ == '__main__':while True:path = input('请输入源数据文件路径:')if not os.path.exists(path):  # 文件错误时不退出,而是重新输入print('文件不存在,请检查路径后重新输入!')continueelse:while True:sheet_name = input('请输入sheet_name:')try:obj = SourceData(path, sheet_name)obj.to_sql()except Exception as msg:print(traceback.format_exc())continue
  1. excel造数模板如下
    由于sheet页名称有长度限制,所以只有将表名放于主体区域::
    在这里插入图片描述

  2. 执行结果如下:
    先指定excel路径,后面会进入到sheet名称读取的循环中,可以在一个excel文件里面建多个表的造数sheet。
    转换结果会打印出来,但用户不需要再去选中复制,因为这里用了pyperclip模块,在代码中已经复制到剪贴板了,可以直接粘贴使用
    在这里插入图片描述

由于功能简单,所以就不做界面了

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

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

相关文章

Flink CDC系列之:调研应用Flink CDC将 ELT 从 MySQL 流式传输到 StarRocks方案

Flink CDC系列之:调研应用Flink CDC将 ELT 从 MySQL 流式传输到 StarRocks方案 准备准备 Flink Standalone 集群准备 docker compose为 MySQL 准备记录使用 Flink CDC CLI 提交作业 同步架构和数据更改路由变更清理 本教程将展示如何使用 Flink CDC 快速构建从 MySQ…

Rust 力扣 - 1. 两数相加

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用一个全局的备忘录,然后我们遍历数组,如果当前元素在备忘录里面找到了,就返回备忘录里面记录的下标和当前下标记录,没找到就把当前元素匹配的元素和当前元素…

DEVOPS: 容器与虚拟化与云原生

概述 传统虚拟机,利用 hypervisor,模拟出独立的硬件和系统,在此之上创建应用虚拟机是一个主机模拟出多个主机虚拟机需要先拥有独立的系统docker 是把应用及配套环境独立打包成一个单位docker 是在主机系统中建立多个应用及配套环境docker 是…

【WiFi7】 支持wifi7的手机

数据来源 Smartphones with WiFi 7 - list of all latest phones 2024 Motorola Moto X50 Ultra 6.7" 1220x2712 Snapdragon 8s Gen 3 16GB RAM 1024 GB 4500 mAh a/b/g/n/ac/6e/7 Sony Xperia 1 VI 6.5" 1080x2340 Snapdragon 8 Gen 3 12GB RAM 512 G…

基于JAVASE的题

字符集合 描述: 每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。 每组数据一行,按字符串原有的字符顺序,输出字符集合,记重复出现并靠后的字…

【数学二】多元函数积分学-重积分-二重积分定义、性质、计算

考试要求 1、了解多元函数的概念,了解二元函数的几何意义. 2、了解二元函数的极限与连续的概念,了解有界闭区域上二元连续函数的性质. 3、了解多元函数偏导数与全微分的概念,会求多元复合函数一阶、二阶偏导数,会求全微分&#x…

以 6502 为例讲讲怎么阅读 CPU 电路图

开篇 你是否曾对 CPU 的工作原理充满好奇,以及简单的晶体管又是如何组成逻辑门,进而构建出复杂的逻辑电路实现?本文将以知名的 6502 CPU 的电路图为例,介绍如何阅读 CPU 电路图,并向你演示如何从晶体管电路还原出逻辑…

RISC-V笔记——显式同步

1. 前言 RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要记录下preserved program order(保留程序顺序)中的Explicit Synchronization(显示同步)。 2. 显示同步 显示同步指的是&#xff1a…

ArcGIS计算落入面图层中的线的长度或面的面积

本文介绍在ArcMap软件中,计算落入某个指定矢量面图层中的另一个线图层的长度、面图层的面积等指标的方法。 如下图所示,现在有2个矢量要素集,其中一个为面要素,表示某些区域;另一个为线要素,表示道路路网。…

软考系统分析师知识点二四:错题集11-20

前言 今年报考了11月份的软考高级:系统分析师。 考试时间:11月9日。 倒计时:13天。 目标:优先应试,其次学习,再次实践。 复习计划第二阶段:刷选择题,搜集错题集反复查看&#x…

Pr 视频效果:波形变形

视频效果/扭曲/波形变形 Distort/Wave Warp 波形变形 Wave Warp效果用于在剪辑上创建类似波浪的动态变形效果。 此效果会自动动画化,波形以恒定速度移动。要改变速度或停止波动,需要设置关键帧。 ◆ ◆ ◆ 效果选项说明 通过调整波形的类型、高度、宽度…

《分布式机器学习模式》:解锁分布式ML的实战宝典

在大数据和人工智能时代,机器学习已经成为推动技术进步的重要引擎。然而,随着数据量的爆炸性增长和模型复杂度的提升,单机环境下的机器学习已经难以满足实际需求。因此,将机器学习应用迁移到分布式系统上,成为了一个不…

Flutter鸿蒙next 中如何实现 WebView【跳、显、适、反】等一些基础问题

✅近期推荐:求职神器 https://bbs.csdn.net/topics/619384540 🔥欢迎大家订阅系列专栏:flutter_鸿蒙next 💬淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路…

【计算机操作系统】课程 作业二 进程与线程 408考研

作业二 进程与线程 1.根据下图,回答问题。(共65分) (1) 请简述进程发生状态变迁1、3、4、6、7的原因。(每条5分.共25分) 1表示操作系统把处于创建状态的进程移入就绪队列;3表示进程…

.Net 8 Web API CRUD 操作

本次介绍分为3篇文章: 1:.Net 8 Web API CRUD 操作https://blog.csdn.net/hefeng_aspnet/article/details/143228383 2:在 .Net 8 API 中实现 Entity Framework 的 Code First 方法https://blog.csdn.net/hefeng_aspnet/article/details/1…

【LeetCode:264. 丑数 II + 小根堆】

在这里插入代码片 🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕…

stm32 使用J-Link RTT Viewer打印日志

文章目录 stm32 使用J-Link RTT Viewer一、RTT功能简介二、准备工作安装J-Link软件驱动:获取RTT驱动文件:配置工程: 三、使用RTT打印日志初始化RTT:打印日志:查看日志: 四、高级功能封装print_log函数&…

021、深入解析前端请求拦截器

目录 深入解析前端请求拦截器: 1. 引言 2. 核心实现与基础概念 2.1 基础拦截器实现 2.2 响应拦截器配置 3. 实际应用场景 3.1 完整的用户认证系统 3.2 文件上传系统 3.3 API请求缓存系统 3.4 请求重试机制 3.5 国际化处理 4. 性能优化实践 4.1 请求合并…

三周精通FastAPI:15 请求文件和同时请求表单+文件

官网文档:请求文件 - FastAPI 请求文件 File 用于定义客户端的上传文件。 from fastapi import FastAPI, File, UploadFileapp FastAPI()app.post("/files/") async def create_file(file: bytes File()):return {"file_size": len(file)}…

直播系统源码技术搭建部署流程及配置步骤

系统环境要求 PHP版本:5.6、7.3 Mysql版本:5.6,5.7需要关闭严格模式 Nginx:任何版本 Redis:需要给所有PHP版本安装Redis扩展,不需要设置Redis密码 最好使用面板安装:宝塔面板 - 简单好用的…