加入收藏 | 设为首页 | 会员中心 | 我要投稿 武陵站长网 (https://www.50888.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

用 Python 将多表分批次从数据库导出到Excel

发布时间:2023-01-30 14:31:13 所属栏目:MsSql教程 来源:网络
导读:
文/张俊 投稿图片来源于网络
本文目录
1. 应用场景2. 功能事项3. 主要实现概览主要方法4. 使用示例5. 总结
1. 应用场景
最近经常需要手工从后台数据库导出某些数据表到Excel文件,而且源数

mssql数据库导出_mssql 复制表和数据_mssql数据库导出

文/张俊 投稿图片来源于网络

本文目录

1. 应用场景2. 功能事项3. 主要实现概览主要方法4. 使用示例5. 总结

1. 应用场景

最近经常需要手工从后台数据库导出某些数据表到Excel文件,而且源数据表的数据量大小不一,导致在导出到本地文件这个过程中需要根据情况来调整每个批次的写入数据量。为了避免反复的手工操作、高效率到多份离线数据,便做了这个小工具来一键完成任务。

2. 功能事项3. 主要实现概览

A[创建类]?-->|方法1|?B(创建数据库连接)
A[创建类]?-->|方法2|?C(取查询结果集)
A[创建类]?-->|方法3|?D(利用句柄写入Excel)
A[创建类]?-->|方法4|?E(读取多个源表)

B(创建数据库连接)?-->U(调用示例)
C(取查询结果集)?-->U(调用示例)
D(利用句柄写入Excel)?-->U(调用示例)
E(读取多个源表)?-->U(调用示例)

主要方法

????def?__init__(self,host,user,pwd,db):
????????self.host?=?host
????????self.user?=?user
????????self.pwd?=?pwd
????????self.db?=?db

????def?__getConn(self):
????????if?not?self.db:
????????????raise(NameError,'没有设置数据库信息')
????????self.conn?=?pymssql.connect(host=self.host,?user=self.user,?password=self.pwd,?database=self.db,?charset='utf8')
????????cur?=?self.conn.cursor()
????????if?not?cur:
????????????raise(NameError,'连接数据库失败')
????????else:
????????????return?cur

writer?=?pd.ExcelWriter(file)
df_fetch_data[rs_startrow:i*N].to_excel(writer,?header=isHeader,?index=False,?startrow=startRow)

def?exportToExcel(self,?**args):
????for?sourceTB?in?args['sourceTB']:???????
????????arc_dict?=?dict(
????????????sourceTB?=?sourceTB,
????????????path=args['path'],
????????????startRow=args['startRow'],
????????????isHeader=args['isHeader'],
????????????batch=args['batch']
????????)
????????print('\n当前导出的数据表为:%s'?%(sourceTB))
????????self.writeToExcel(**arc_dict)
????return?'success'

4. 使用示例

如下是调用样例。先用类MSSQL创建对象mssql数据库导出,再定义关键字参数args,最终调用方法导出到文件即完成数据导出。

import?pandas?as?pd
ms?=?MSSQL(host="localhost",user="test",pwd="test",db="db_jun")
args?=?dict(
sourceTB?=?['tb2',?'tb1'],#?待导出的表
path='D:\\myPC\\Python\\',#?导出到指定路径
startRow=1,#设定写入文件的首行,第2行为数据首行
isHeader=False,#?是否包含源数据的标题
batch=5
)
#?导出到文件
ms.exportToExcel(**args)

5. 总结

本篇主要介绍完成多表(相同表结构)导出数据、分批次写入到同一Excel的实现过程,需要注意使用文件公共句柄、写入行初始化、关键字参数配置等。后续也可以继续扩展,将指定数据源表导出到指定目标文件。

(编辑:武陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!