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

这篇具有很好参考价值的文章主要介绍了Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、引言

小屌丝:鱼哥,我想请教一个问题。
Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。
小鱼:国庆假期你经历了什么,让你变得如此的 “善良”?
小屌丝:别这么说,我一直很善良,至少,很正直…
小鱼:打住,直接点, 你有什么需要帮助的?
小屌丝:我就是想把查询的结果也入到excel表中
小鱼:然后呢?
小屌丝:sqlserver数据库。
小鱼:…好吧,还有其他要求吗?
小屌丝:没有了。
小鱼:OK,我就花费几分钟,给你整一个。
Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。

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()

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

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

2.2 pandas写入excel

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

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

关于小屌丝提的要求, 我换一个写法,毕竟,多学几个知(姿 )识( ),百利而无一害。
Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。

2.2.1 安装

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

pip install pandas

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

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

2.2.2 代码

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

代码示例

# -*- 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("数据库链接关闭!")

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

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://www.toymoban.com/news/detail-477991.html

到了这里,关于Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【shell】通过EOF实现一个链接执行多条sql

    在shell脚本中,通常将EOF与 结合使用,表示后续的输入作为子命令或子Shell的输入,直到再遇到EOF为止,再返回到主Shell。EOF( 即 end of file )只是一个分界符。 EOF一般会配合cat能够多行文本输出,本文最后实现通过EOF执行多条sql。     两个都是获取stdin,并在EOF处结束stdin,输

    2024年02月12日
    浏览(10)
  • 【C#/.NET】Dapper使用QueryMultipleAsync执行多条SQL

    【C#/.NET】Dapper使用QueryMultipleAsync执行多条SQL

    ​  目录   背景 解决方案 总结           对于查询数据列表的功能,需要分页已经查询总数。这里涉及两句SQL,一个是查询分页对应的数据,第二个是Count(*); 会导致部分重复代码和两次的数据库查询。           Dapper有封装QueryMultipleAsync的异步方法支持执行多条SQL

    2024年02月08日
    浏览(8)
  • Oracle数据库SQL*Plus命令行执行SQL语句时,中文乱码报错解决方法

    Oracle数据库SQL*Plus命令行执行SQL语句时,中文乱码报错解决方法

    🎉欢迎来到Java学习路线专栏~Oracle数据库SQL*Plus命令行执行SQL语句时,中文乱码报错解决方法 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java学习路线 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹

    2024年01月22日
    浏览(11)
  • Python中执行调用JS的多种方法汇总

    Python中执行调用JS的多种方法汇总

      做爬虫的人大家都知道,现在国内Web或App普遍防护都做的很好,且越有价值的网站这方面越强 再小再弱的网站现在或多或少都要整点反爬 JS在反爬中应用非常广泛,现在做爬虫工程师基本都要懂JS,因为各种JS加密需要逆向!破解JS加密只是第一步,之后就是如何在我们的

    2024年02月12日
    浏览(7)
  • Python中pymysql模块详解:安装、连接、执行SQL语句等常见操作

      在Python中,我们经常需要连接和操作数据库。pymysql是一个流行的Python模块,专门用于与MySQL数据库进行交互。本文将介绍pymysql模块的基本使用方法,以及它在实际开发中的一些应用场景。   pymysql是一个用于Python编程的第三方模块,用于连接和操作MySQL数据库。它提供

    2024年02月07日
    浏览(7)
  • 【逆向爬虫】Python中执行调用JS的多种方法汇总

    【逆向爬虫】Python中执行调用JS的多种方法汇总

    “以前的数据靠买,现在的数据靠爬”,越来越多的学者通过网络爬虫来获取数据。但是做爬虫的人都知道,现在的很多网站都在和我们斗智斗勇,防护普遍越来越好,并且越有价值的网站在这方面越强,哪怕是小一点的网站也多多少少存在一些反爬。而JS逆向又是网络反爬

    2024年02月04日
    浏览(19)
  • SQL语句的执行顺序

    1 from                找表 2 on                   关联条件帅选 3 join                 关联表操作 4 where             条件筛选 5 group by         进行分组 6 avg,sum…      执行函数 7 having            分组后筛选 8 select           

    2024年02月10日
    浏览(12)
  • oracle 同一张表同时insert多条数据 mysql 同一张表同时insert多条数据

    在Oracle数据库中,你可以使用INSERT ALL语句同时向同一张表插入多条数据。INSERT ALL语句允许你一次执行多个插入操作,可以提高插入的效率和速度。 以下是使用INSERT ALL语句插入多条数据的示例: 在上面的示例中,我们使用INSERT ALL语句向\\\"employees\\\"表插入了三条数据。每个INSE

    2024年02月03日
    浏览(9)
  • SQL语句执行顺序相关问题

    注意本文是SQL执行顺序,不是MySQL Server内部执行流程。 MySQL并非像PostgreSQL(被认为是最接近 SQL 标准的数据库之一)一样严格按照SQL标准,MySQL执行引擎会根据查询的具体情况和优化策略来决定具体的执行顺序,所以SQL执行顺序是理论顺序。 select...from...join...on...where...group

    2024年02月19日
    浏览(7)
  • 02 SQL更新语句执行流程

    与查询流程不一样的是,更新流程还涉及两个重要的日志模块。 ​ redo log(重做日志)和 binlog(归档日志) ​ redo log 物理日志 binlog 逻辑日志 WAL 的全称是 Write-Ahead Logging。 关键点就是 先写日志,再写磁盘 ,用来提升更新效率。 具体来说,当有一条记录需要更新的时候,

    2024年02月19日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包