当前位置: 首页 > news >正文

测试造数,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.lryc.cn/news/469687.html

相关文章:

  • Python 应用可观测重磅上线:解决 LLM 应用落地的“最后一公里”问题
  • 从零开始:用Spring Boot搭建厨艺分享网站
  • 《2024中国泛娱乐出海洞察报告》解析,垂直且多元化方向发展!
  • 强化学习数学原理学习(一)
  • 获 Sei 基金会投资的 MetaArena :掀起新一轮链上游戏革命
  • react-signature-canvas 实现画笔与橡皮擦功能
  • 004:ABBYY PDF Transformer安装教程
  • FlinkSQL之temporary join开发
  • 第二十六节 直方图均衡化
  • 工单管理用什么工具好?8款推荐清单
  • 工地安全新突破:AI视频监控提升巡检与防护水平
  • World of Warcraft [CLASSIC][80][the Ulduar]
  • python实现数据库的增删改查功能,图形化版本
  • pipeline开发笔记
  • spark读取parquet文件
  • redis详细教程(1.String类型)
  • 用友U8接口-库存管理(7)
  • Spring Boot HikariCP数据库连接池入门
  • Docker快速上手教程:MacOS系统【安装/配置/使用/原理】全链路速通
  • 【JavaSE】认识String类,了解,进阶到熟练掌握
  • vue3 vben-admin 窗口大小更改后 echarts尺寸变为 100px的问题
  • Web应用框架-Django应用基础(3)-Jinja2
  • js(深浅拷贝,节流防抖,this指向,改变this指向的方法)
  • 香橙派5(RK3588)使用npu加速yolov5推理的部署过程
  • 基于MWORKS的蓝桥杯「智能装备数字化建模大赛」正式发布,首期培训本周六开启
  • 021、深入解析前端请求拦截器
  • windows中的tracert命令
  • 【玩儿】Java 数字炸弹小游戏(控制台版)+ IO 数据存储
  • 今日头条躺赚流量:自动化新闻爬取和改写脚本
  • 日常实习与暑期实习详解