SqlServer查询结果写入多个Sheet页

  • 1、引言
  • 2、代码实战
    • 2.1 openpyxl写入excel
      • 2.1.1 安装
      • 2.1.2 代码
    • 2.2 pandas写入excel
      • 2.2.1 安装
      • 2.2.2 代码
  • 3、总结

1、引言

小屌丝:鱼哥,我想请教一个问题。

小鱼:国庆假期你经历了什么,让你变得如此的 “善良”?
小屌丝:别这么说,我一直很善良,至少,很正直…
小鱼:打住,直接点, 你有什么需要帮助的?
小屌丝:我就是想把查询的结果也入到excel表中
小鱼:然后呢?
小屌丝:sqlserver数据库。
小鱼:…好吧,还有其他要求吗?
小屌丝:没有了。
小鱼:OK,我就花费几分钟,给你整一个。

2、代码实战

2.1 openpyxl写入excel

2.1.1 安装

凡是涉及第三方库,必须需要安装,
老规矩,直接pip安装

pip install openpyxl
pip install pymssql

其它安装方式,直接看这两篇:

  • Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
  • Python3:我低调的只用一行代码,就导入Python所有库!

2.1.2 代码

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-10-10
# @Author : Carl_DJ'''
实现功能:1、python直接链接sqlserver数据库,读取数据库内容2、执行 查询结果,并写入到excel表中
应用模块:pymssql,os,openpyxl'''
import os
import pymysql #mysql数据库链接
import pymssql #sqlserver数据库链接
import openpyxl#输出文件夹
outfile_path = './data'#如果没有outfile_path 这个文件夹,就自动创建
if not os.path.exists(outfile_path):os.mkdir(outfile_path)#输出文件名称
filename = r'SQLtest.xlsx'
file_path= os.path.join(outfile_path,old_filename)#创建数据库链接
#链接SqlServer
conn = pymssql.connect(host = "localhost",port = 3306,user = "",psd = "",database = "")if conn:print("数据库链接成功")time.sleep(3)#sql查询语句
sql = "select UUID,KEYID,TYPE,NAME,PRICE from KEY_INFO WHERE NAME LIKE '%测试商品名称'"#创建游标
cur = conn.cursor()
#执行sql语句
cur.execute(sql)#返回查询结果
result = cur.fetchall()#创建一个工作簿对象
wb = openpyxl.Workbook()
#定义sheet名
Key_Info_sheet = wb.create_sheet('KEY_INFO ',0)#获取默认sheet页
# Key_Info_sheet = book.active#获取表头信息
h1 = [filed[0] for filed in cur.description]
Key_Info_sheet.append(h1)
for i in result:Key_Info_sheet.append(i)
wb.save(file_path)# 关闭数据库链接
cur.close()
conn.close()

执行结果

嗯,这就非常完美的写入excel了。

2.2 pandas写入excel

小屌丝:鱼哥,我这一次要执行多个SQL语句,
小鱼:… 你不是说没有了吗
小屌丝:突然想起来的。
小鱼:好吧,还有其他的要求吗?
小屌丝:然后把每个SQL查询结果写入不同的sheet页

小鱼:xxxxxx!!还有吗????!!!
小屌丝:没有了。
小鱼:有也没有。

关于小屌丝提的要求, 我换一个写法,毕竟,多学几个知(姿 )识(势 ),百利而无一害。

2.2.1 安装

这次有pandas来写。
所以,第一步,安装

pip install pandas

其它安装方式,直接看这两篇:

  • Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
  • Python3:我低调的只用一行代码,就导入Python所有库!

2.2.2 代码

sql文档

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-10-10
# @Author : Carl_DJ'''
实现功能:1、python直接链接SqlServer数据库,实现SQL查询2、同时执行多条sql语句,查询结果分别写入不同的sheet页中;
应用模块:pandas,pymssql,os,time'''
import pandas as pd
from pandas.io import sql
import pymssql
import time,os#设置时间戳
now = time.strftime("%Y_%m_%d-%H%M%S",time.localtime())
print(f'执行时间:{now}')#创建数据库链接
#链接SqlServer
conn = pymssql.connect(host = "localhost",port = 3306,user = "",psd = "",database = "")if conn:print("数据库链接成功")time.sleep(3)#输出文件夹
file_path = './data'#如果没有outfile_path 这个文件夹,就自动创建
if not os.path.exists(file_path):os.mkdir(file_path)#输出文件格式
Outfile_name = ( 'SqlsTest' + now + '.xlsx')
#读取sql文件名称
sqls_name = r'SqlsFile.txt'
#sql执行脚本文件(参数化路径)
MCsql_file = os.path.join(file_path,MCsql_name)
#输出文件夹路径
Outfile_path = os.path.join(file_path,Outfile_name)#把查询结果写入不同的sheet页,对sheet页进行命名
sheet_names = ['KEY_INFO','PRO_INFO']#定义读取sql方法,返回sql语句
def sqls(MCsql_file):global sqlstrswith open(MCsql_file,'r',encoding='utf-8') as f:#每个sql之间,以“;”作为分隔符sqlstrs = f.read().split(';')#定义数据查询方法
def quert_method(sql_str):#设置全局变量global dfdf = pd.read_sql(sql_str,con=conn)#执行程序
if __name__ == '__main__':sqls(MCsql_file)#写入excel文件with pd.ExcelWriter(Outfile_path) as writer:for i in range(0,len(sqlstrs)):quert_method(sqlstrs[i])df.to_excel(writer,sheet_name=sheet_names[i],index=False,header=True)print("数据写入完成!")# 关闭数据库链接
conn.close()
print("数据库链接关闭!")

执行结果

3、总结

看到这里,今天的分享差不多就完成了。
今天主要通过链接SqlServer数据库,把查询数据结果写入到excel表中。
同时,应用openpyxl 和pandas两个模块,分别对excel的操作。
如果对pandas不调了解,可以阅读小鱼的这篇博文

  • 数据分析之Pandas从入门到放弃:代码+实战,9分钟带你推开Pandas大门!!!
  • Python3,Pandas 5行代码实现对excel 读写操作!
  • Python3,pandas自动处理exlce数据及yagmail邮件自动发送
  • Python3,3行代码,把excel转换成任意格式的word文档,老板直接给我涨薪10K!!!
    这里就不列举了,如果想学习更多的数据分析,可以点击小鱼的数据分析专栏

我是小鱼

  • CSDN博客专家
  • 51Testing认证讲师

关注我,带你学习Python领域更多更专业的技能。

Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。相关推荐

  1. python执行mysql多个sql语句_mysql -- 一次执行多条sql语句

    最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...

  2. mysql数据库会同时执行sql吗_mysql 一次执行多条sql语句

    最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...

  3. 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

  4. C#(.net)中的一次连接数据库执行多条sql语句

    第一种方法: string str="server=.;uid=sa;pwd=111111;database=text_db";//连接字符串 SqlConnection SCON ...

  5. oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句

    有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的 解决方案是把sql拼成下面这种形式: begin update TB_VG set seq = 1, vessel ...

  6. c#执行多句oracle,C#一次执行多条SQL语句,Oracle11g数据库

    由于经常执行SQL语句,如果一条一条执行效率低下. oarclecmd.CommandText = sqlstr; oraclecmd.ExecuteNonQuery(); sqlstr 可以写成如下 ...

  7. Mybatis 获取当前序列和下一个序列值 以及在一个方法中写多条SQL 语句

    目录 1.Mybatis 获取当前序列和下一个序列值 2.Mybatis 在一个方法中写多条SQL 语句 1.Mybatis 获取当前序列和下一个序列值 #获取当前序列值 select XXX_seq ...

  8. 执行多条SQL语句,执行数据库事务(可传入Sql参数)

    上篇博客,实例介绍了一个事务执行多条SQL语句函数(int ExecuteSqlTran(List<String> SQLStringList))点击打开链接,方便之余又发现了它的缺陷-- ...

  9. Jmeter JDBC Request执行多条SQL语句

    之前写过Jmeter操作mysql的文章https://blog.csdn.net/qq_36502272/article/details/88891873今天我们再看下如何操作多条sql语句 1.添 ...

最新文章

  1. 【活动】人工智能产学研生态建设研讨会报名
  2. MySQL基础篇:设置大小写不敏感
  3. 程序员如何跟领导提离职_如何跟领导谈加薪,做好这几点,成功谈加薪又不失风度...
  4. python不包含某字符,查找不包含某些文本字符串的所有文本文件
  5. PMP之项目沟通管理
  6. Jest 测试框架使用的学习笔记
  7. 66. 加一(C, Python)
  8. System.out和System.err的区别
  9. hdu 4665 搜索
  10. python无限弹窗代码_python弹窗程序教程(附源码解析)
  11. [lammps教程]lammps原子沉积实例教程
  12. 怪物之心无法触发_《异度之刃2》稀有异刃力男怪物之心支线任务攻略
  13. Samba————Linux与windows共享文件
  14. Ubuntu桌面美化教程
  15. Android微信授权登录闪退,如何解决微信闪退问题 四种解决微信闪退无法登录的原因及方...
  16. 雅诗兰黛集团全球研发中心中国项目开工建设;包大师完成B轮及B+轮融资 | 美通企业日报...
  17. 码元、符号、波特率、比特率等概念的了解
  18. python——annotate函数
  19. 简单的解决textarea文本框内容换行,对应到页面的内容也换行的问题
  20. 【机器学习】P18 反向传播(导数、微积分、链式法则、前向传播、后向传播流程、神经网络)

热门文章

  1. Python面向对象——矩形面积
  2. 用小程序商城模板搭建商城【商城小程序】
  3. 盘点七大接地气的翅片管式换热器设计软件
  4. Android 通过okhttp + jsoup 爬虫爬取网页小说
  5. 微信小程序地址选择wx.chooseLocation
  6. 邵阳学院计算机方面的专业,邵阳学院专业排名及介绍 哪些专业最好
  7. c开源hash项目 uthash的用法总结
  8. [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ServletTest_war]]
  9. 工业互联网的基础技术有哪些
  10. 2021-05-10 关于vant按钮小程序点击后出现灰色背景去除方式