使用Python从给定的Excel文件中读取数据库名+表名+字段名按按关键字段名或对应表中的全部数据从MySQL数据库中查找,然后将匹配到的数据写入(导出)到新的Excel表中

适用背景

1>存有数据的数据库
2>列出需要查找的数据库名+表名的Excel文件
3>需要把MySQL数据库中的大量信息,即不在同一数据库下的若干个表,需要将表中的部分数据或全部数据导出到Excel中,单表对应一个Excel文件,自动创建Excel文件,自动执行。实现自动化解决量化任务的功能。

实现思路

使用Python的openpyxl模块读取已知Excel中存有的需要查找的数据库名+表名 、然后连接数据库,根据读取到的数据库名表名构造Sql语句、从MySQL数据库中按需查找,最后将匹配到的数据写入到新的Excel表中,并保存。

具体如下图

实测无问题,可实现若干个(甚至上千个)非同一数据库下的表导出到Excel的任务,执行速度根据任务大小来定,代码使用循环控制,不会产生过度耗费时间的情况。
注意,已知Excel文件的内容必须按下图规范,若命名非数据库名+“.”+表名,则需要自行修改strrr函数。
表名默认为test.xlsx,执行此代码后,产生的新Excel文件会在同级目录下,建议将此.py文件放在一个文件夹(目录中)执行。

执行代码之前需要确保数据库的连接,关闭test.xlsx文件,防止文件占用报错
A1~An(n为任意整数1,2,…10000…n) 单元格存放数据库名.表名
例如图中第一行school为数据库名,“.”后为表名,sname,ssex,sage为School数据库下student表中的字段名,第二行、第三行、第N行同理。

下图即为test.xlsx
在这里插入图片描述

执行代码之前

在这里插入图片描述

执行代码之后

在这里插入图片描述
新生成的文件命名格式为"数据库名(school)"+“.”+“表名(student)”+"_"+“N(1,2,3…10000…n)”
打开school.student_1展示

在这里插入图片描述

附代码如下:此代码用于如上所述情况(将表中部分关键数据根据已知字段名导出)

import openpyxl
import pymysql
from openpyxl import Workbook

# 自定义函数,实现自动创建Excel文件的功能,便于实现
def createexcel(path):
    wb = Workbook()
    wb.save(path)
# 自定义函数,依此构造新的字符串,用于构造Sql语句
def strrr(li):
    a = ""
    for i in li:
        a = a + i + ','
    a = a [:-1]
    return a

# 连接数据库 用户名密码修改
conn = pymysql.connect(host="localhost", user="你的数据库用户名", passwd="你的数据库密码",
                        port=你的数据库端口,默认为3306, charset="utf8")
cur = conn.cursor()

wb = openpyxl.load_workbook('test.xlsx')    # 打开存有数据库及表名字段名的EXCEL文件
ws = wb.active
sh = wb.get_sheet_by_name("Sheet1")
row = sh.max_row                  # 获取Excel最大行数
col = sh.max_column				  # 获取Excel最大列数

# 使用循环控制语句,执行循环中的内容
for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值