我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python实现SqlServer查询结果并写入多个Sheet页的方法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python实现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 这个文件夹,就自动创建
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 sqlstrs
    with open(MCsql_file,'r',encoding='utf-8') as f:
        #每个sql之间,以“;”作为分隔符
        sqlstrs = f.read().split(';')

#定义数据查询方法
def quert_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 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的操作。

到此这篇关于Python实现SqlServer查询结果并写入多个Sheet页的方法详解的文章就介绍到这了,更多相关Python写入多个Sheet页内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python实现SqlServer查询结果并写入多个Sheet页的方法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python实现SqlServer查询结果并写入多个Sheet页的方法详解

这篇文章主要为大家整理了两个Python实现SqlServer查询结果并写入多个Sheet页的方法,文中的示例代码讲解详细,感兴趣的可以了解一下
2022-12-08

mysql一次将多条不同sql查询结果并封装到一个结果集的实现方法

目录前言问题处理过程1.使用union all进行并列查询2.求和处理总结前言最近遇到一个统计查询需求,要求一次性查询多个统计信息,其中两个查询信息不在一个表中,也没有业务关联,表中也没有做连接处理。不考虑产品设计是否合理,完全是实际需求
2023-03-10

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录