0


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

SqlServer查询结果写入多个Sheet页

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 这个文件夹,就自动创建ifnot 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 这个文件夹,就自动创建ifnot 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语句defsqls(MCsql_file):global sqlstrs
    withopen(MCsql_file,'r',encoding='utf-8')as f:#每个sql之间,以“;”作为分隔符
        sqlstrs = f.read().split(';')#定义数据查询方法defquert_method(sql_str):#设置全局变量global df
    df = pd.read_sql(sql_str,con=conn)#执行程序if __name__ =='__main__':
    sqls(MCsql_file)#写入excel文件with pd.ExcelWriter(Outfile_path)as writer:for i inrange(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领域更多更专业的技能。


本文转载自: https://blog.csdn.net/wuyoudeyuer/article/details/127248748
版权归原作者 Carl_奕然 所有, 如有侵权,请联系我们删除。

“Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。”的评论:

还没有评论