吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1658|回复: 6
收起左侧

[Python 原创] python 连接mysql批量sql查询并导出成excel

[复制链接]
Cristy 发表于 2023-9-21 09:40

逻辑:

将配置的所有sql 循环在每一个配置号的mysql连接-库中执行,并分别为每一个连接生成一张标,一个查询sql的结果为1个sheet页

用法:
1. 配置多个Mysql连接、库、文件名
2. 配置SavePath存储路径
3. 配置sql, 格式为列表格式 : sheet页名:sql 多个用,隔开  ["sheet页:sql","sheet页2:sql2"]

导出为多个sheet合并到1个文件





代码


[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-

"""
[url=home.php?mod=space&uid=267492]@file[/url]       : 未映射厂商型号结果导出.py
[url=home.php?mod=space&uid=155760]@Project[/url]    : pythonToolsProject
[url=home.php?mod=space&uid=686208]@AuThor[/url]     : aural
[url=home.php?mod=space&uid=621973]@Email[/url]      : 
@Time       : 2023/9/7 11:17
@Description:
"""
import time

import pandas as pd
from openpyxl import Workbook
import pymysql

# 存储路径
SavePath= '存储路径'
# MySQL连接配置
dblist = [
    {"env": "文件名",
     "db_config": {
         'host': 'ip',
         'port': 3306,
         'user': '用户名',
         'password': '密码',
         'database': '库名'
     }
     },
    {"env": "文件名",
     "db_config": {
         'host': 'ip',
         'port': 3306,
         'user': '用户名',
         'password': '密码',
         'database': '库名'
     }
     }
]

# 读取 SQL 配置文件
# with open('sql.txt', 'r', encoding='utf-8') as file:
#     sql_config = file.readlines()
sql_config = [
    "sheet1: select * from user;",
    "sheet2: select * from class;"
]


def generate(db_config, env):
    # 创建 Excel 文件
    workbook = Workbook()
    worksheet = workbook.active

    # 删除默认的空工作表页
    default_sheet = workbook['Sheet']
    workbook.remove(default_sheet)

    # 建立数据库连接
    connection = pymysql.connect(**db_config)

    # 遍历每行 SQL 配置
    for line in sql_config:
        line = line.strip()
        if line:
            # 解析 sheet 名和 SQL 查询
            sheet_name, sql_query = line.split(':')

            # 执行 SQL 查询
            result = pd.read_sql_query(sql_query, connection)

            # 创建工作表,并在第一行添加标题
            worksheet = workbook.create_sheet(sheet_name)
            worksheet.append(result.columns.tolist())

            # 将查询结果写入 Excel
            for row in result.iterrows():
                worksheet.append(row[1].tolist())

    # 关闭数据库连接
    connection.close()

    # 保存 Excel 文件
    workbook.save(SavePath + '' + env + '-' + time.strftime('%Y-%m-%d_%H_%M', time.localtime(
        time.time())) + '.xlsx')


if __name__ == '__main__':
    for i in dblist:
        generate(i["db_config"], i["env"])

免费评分

参与人数 2热心值 +2 收起 理由
1113519447 + 1 result.to_excel('1.xlsx') 就可以了干嘛要写这么多
15343347719 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

还来得及。 发表于 2023-9-21 10:40
lcg2014 发表于 2023-9-21 10:35
最好有个gui界面,比如qt/thinker

要想用 不是有那么多成品呢嘛 写个小脚本自用而已  还要GUI?
lcg2014 发表于 2023-9-21 10:52
都是自习,脚本练习提高到GUI。
单纯执行sql,cmd就行
lcg2014 发表于 2023-9-21 10:35
zhangxu0529 发表于 2023-9-22 08:52
excel老版本打开提示文件错误,不兼容么
 楼主| Cristy 发表于 2023-9-22 10:42
zhangxu0529 发表于 2023-9-22 08:52
excel老版本打开提示文件错误,不兼容么

我遇到过,只知道是哪个sql查询的结果写入后会报,但是没找到具体原因
mebyan 发表于 2023-9-22 14:26
Cristy 发表于 2023-9-22 10:42
我遇到过,只知道是哪个sql查询的结果写入后会报,但是没找到具体原因

openpyxl不支持旧的.xls文件格式
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 21:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表