python利用pandas高效从mysql读取数据写入excel多sheet

import os
from sqlalchemy import create_engine
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
import pymysql
import pandas as pd
import datetime

tdy = datetime.date.today()

table_name = 'gitlab_project_commits_week'
sheet1_name = "有多少个项目提交,分别提交多少次"
sheet2_name = "每个项目有哪些用户提交"
sheet3_name = "每个人提交了多少次代码,在那些项目提交"



sql1 = f'''select a.*,web_url from (select id,name,branch_name,count(id) as count from {table_name}  group by id,branch_name) a join (select id,web_url from gitlab_projects ) b WHERE a.`id` = b.`id` ;'''

sql2 = f'''select id,name,author_name from {table_name} group by id,author_name;'''
sql3 = f'''select id,author_name,name,count(id) as count from {table_name}  group by author_name,id;'''

sql_rela_sheet = {
    sheet1_name: sql1,
    sheet2_name: sql2,
    sheet3_name: sql3
}

    #sqlalchemy 作为数据库连接引擎
def export_to_excel():
	engine = create_engine('mysql+pymysql://root:123456@192.168.30.11:3306/gitlab_info')
    writer = pd.ExcelWriter(f'./Gitlab周提交信息-{tdy}.xlsx')
    print("写入数据")
    for sheet, sql in sql_rela_sheet.items():
    	##获取数据
        df = pd.read_sql_query(sql, engine)
        result_data = pd.DataFrame.from_records(df)
        ##将数据写入excel
        result_data.to_excel(writer, sheet_name=sheet, index=False)
    writer.save()
    print("写入完毕!")

##pymysql方式获取数据并写入excel
# cur_dir = os.path.dirname(__file__)
# conn = pymysql.connect(user='root', password='123456', host='192.100.30.111', database='gitlab_info')
# cursor = conn.cursor()
# cursor.execute(sql1)
# col_head = cursor.description   
# columns = [column[0] for column in col_head]  ##获取游标描述也就是查询结果的列标题,作为excel表的第一行
# print(columns)
# tl = cursor.fetchall()
# print(tl)
# res = pd.DataFrame(tl, columns=columns,)
# res.to_excel(os.path.join(cur_dir, f"Gitlab周提交信息-{tdy}.xlsx"), sheet_name=sheet1_name, startcol=0, index=False)


if __name__ == '__main__':
    export_to_excel()

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值