Python读取excel指定列生成指定sql脚本的方法
作者:sy_y 发布时间:2021-05-06 19:11:13
标签:Python,excel,sql
需求
最近公司干活,收到一个需求,说是让手动将数据库查出来的信息复制粘贴到excel中,在用excel中写好的公式将指定的两列数据用update这样的语句替换掉。
例如:
有个A库,其中有两个A.01和A.02字段,需要将这两个字段替换到下面的sql语句中,
update A set A.01 = 'excel第一列的值' where A.02 = 'excel第二列的值'
虽然excel中公式写好了,但是还需要将总计的那行复制粘贴到txt文档中,所以索性太麻烦,果断用Python写了一个自动化的脚本,虽然查出的数据还需要手动复制excel中,但是后续操作即可用脚本完成
读取excel指定列实现生成txt
废话不多说直接上代码:
#coding=utf-8
from openpyxl import load_workbook
#第一套servicebus.t_spis_servicebus_svcmain表的
#读取excel的数据
def read_excel():
#打开一个workbook
wb = load_workbook(filename='xxx.xlsx')
#获取所有表格(worksheet)的名字
sheets = wb.get_sheet_names()
#遍历每一个sheet,并且拿到worksheet对象
for i in range(len(sheets)):
ws = wb.get_sheet_by_name(sheets[i])
#声明list
list_A_B = []
#遍历A,B列的所有数据值,ws.max_row:获取最大行数
for rowNum in range(1,ws.max_row+1):
if (ws.cell(row=rowNum,column=1).value != None) and (ws.cell(row=rowNum,column=2).value != None):
#ws.cell(row=rowNum,column=1).value:拿到指定列的行数据
sql = 'update A set A.01=' + "'" + ws.cell(row=rowNum,column=1).value + "' " + 'where A.02=' + "'" + ws.cell(row=rowNum,column=2).value + "'"+ ';'
list_A_B.append(sql)
#print(list_A_B)
text_save(list_A_B,'A.txt')
print(str(sheets[i]) + '已完成!')
print('执行成功!')
#将读取的数据存入txt文档中
def text_save(content,filename,mode='a'):
#打开文件
file = open(filename,mode)
for i in range(len(content)):
number = content[i] + '\n'
file.write(number)
file.close()
if __name__ == '__main__':
read_excel()
总结
其中用到的是openpyxl这个库,个人感觉非常好用,初步写的时候参考了一下国外大佬的一篇博客,附上链接:
点我去看大佬博客
来源:https://blog.csdn.net/s740556472/article/details/77666895
0
投稿
猜你喜欢
- 前提:因为本文主要围绕着在thinkPHP5中使用redis的,所以关于redis的安装就不特意说明了,不过在这稍微提醒一下,安装完redi
- SQL Server TEXT、NTEXT字段拆分的问题引用的内容:SET NOCOUNT ON CREATE 
- 在pycharm上依次选择打开File->settings->Editor->File andCode Templates
- 困扰我很久问题终于在昨天被解决了。其实问题很简单<% =now %>老是显示12小时制,总是出现上午、下午。这个问题虽然很小,但
- 描述微软开发的两个动态库存在后门允许用户查看ASP文件源程序和下载整个网站详细随IIS和Frontpage Extention server
- 作用:用ASP程序将页面中的电话号码生成图片格式。以下是引用片段:<% Call Com_CreatValidCode(Request
- Web设计师可以使用HTML4和CSS2.1完成一些很酷的东西。我们可以在不使用陈旧的基于table布局的基础上完成文档逻辑结构并创建内容丰
- 需要准备的工具:SQL Query Analyzer和SqlExec Sunx Version第一部分:去掉xp_cmdshell保护系统的
- 整理了一些JS的常用方法,包括验证啊,全选反选啊,ajax请求啊之类的,因为就是自己用的,写的都比较简单,就算抛砖引玉吧,喜欢的就拿去,不喜
- 本文实例讲述了JS+HTML5 canvas绘制验证码。分享给大家供大家参考,具体如下:css样式:<style>body{ &
- 我对定格动画非常喜爱,也曾经在大学毕业时期制作过一部个人定格动画MV.恰当给CDC博客写文之机,给大家介绍下定格动画,分享下这门独特的拍摄艺
- 提到SQL Server 2005证书,很多人可能以为它只是用来在传输数据的时候起到加密作用的,但在深入了解后,你会发现它的用处还有很多。
- PHP从主流来看,是一门面向过程的语言,它的最大缺点就是无法实现多线程管理,其程序的执行都是从头到尾,按照逻辑一路执行下来,不可能出现分支,
- 生成方式Python中想要自动生成 model文件可以通过 sqlacodegen这个命令来生成对应的model文件sqlacodegen
- 迭代器模式迭代器模式(Iterator Pattern)是一种常用的设计模式,用于遍历集合中的元素,不暴露集合的内部结构。迭代器模式将集合和
- 配置Laravel 的邮件服务可以通过 config/mail.php 配置文件进行配置。邮件中的每一项都在配置文件中有单独的配置项,甚至是
- 类:在HTML中当表现class属性的时候,人们可以用点(.)号来作为~=号的一个替代选择,所以div.value等同于div[class~
- <% SoFia_DbName="jiaoyou&qu
- Variant变量一般会将其代表的数据子类型自动转换成合适的数据类型,但有时候,自动转换也会造成一些数据类型不匹配的错误.这时,可使用转换函
- 问题描述因为项目强制关闭,但是服务还在运行,导致重新运行项目时候 提示地址已经使用(端口被占用)/usr/bin/python3.5 pyt