python3 从mysql抽出数据并写入excel

博客介绍运行结果,以A列的值和第一行的日期作为SQL检索条件,从数据库抽出数据并写入Excel对应的单元格,未抽到数据的单元格为空,涉及Python、MySQL和数据分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def sku_list_catch():
    import xlwings as xw
    excel_app = xw.App(visible=False,add_book=False)
    wb = excel_app.books.open(r'E:\Python\hby\库存管理(自动化).xlsm')

    #检索需要处理的总行数
    rng = wb.sheets['参数设置'].range('b1').expand('table')
    sku_rows = rng.rows.count
    sku_catch = wb.sheets['参数设置'].range(f'b2:b{sku_rows}').value
    #退出Exce
    excel_app.quit()
    return sku_catch#返回sku——list的值
    
sku_list_catch()

import xlwings as xw
excel2_app = xw.App(visible=True,add_book=False)
wb = excel2_app.books.open(r'E:\Python\hby\数据分析.xlsx')
    
def sku_list_update():
    wb.sheets['SKU总销量'].range('a2:d500').clear()#初始化vbasheet里面写入的值
    wb.sheets['SKU总销量'].range('a2').options(transpose=True).value = sku_list_catch()#调用sku_list_catch()函数的值,并写入
sku_list_update()

import pymysql
import re

#连接数据库
my_con = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='88751824',db='hby')

# 创建一个游标
cursor = my_con.cursor()

def sku_count():
    x = 98
    y = 2
    #检索需要处理的总行数
    rng = wb.sheets['SKU总销量'].range('a1').expand('table')
    sku_all_rows = rng.rows.count#获取行数
    sku_all_columns = rng.columns.count#获取列数
    print(sku_all_columns)

    while y <= sku_all_rows:#调用sku_list_catch()函数的值
    
        sku_id = wb.sheets['SKU总销量'].range(f'a{y}:a{y}').value #获取a列的sku值

        chuku_data =str(wb.sheets['SKU总销量'].range(f'{chr(x)}1:{chr(x)}1').value)[0:-9]#获取第1列的日期,并转化为str格式

        info = [sku_id,chuku_data]
        sql_chuku_num = "SELECT SUM(chuku_num) FROM `hby`.`chuku_count` WHERE sku_id = %s AND `yyyymmdd`= %s "   # 所有的填充字符都是 %s
        cursor.execute(sql_chuku_num,info)
        count_str = str(cursor.fetchall())
        count_re = re.compile(r'[0-9]+', re.I)
        count = count_re.findall(count_str) #不区分大小写
        count = str(count)[2:-2]

                                          
        wb.sheets['SKU总销量'].range(f'{chr(x)}{y}:{chr(x)}{y}').value = count

        x += 1
        if x == sku_all_columns+97:
            if y <= sku_all_rows:
                y += 1
                x = 98
            
sku_count()
#info = [date_x,shop_id_x] # 参数必须是 列表或者元组类型

cursor.close() # 关闭游标
my_con.close() # 关闭连接

# 保存数据
wb.save(r'E:\Python\hby\数据分析.xlsx')
#退出Exce
#excel2_app.quit()

运行结果如图,A列的值和第一行的日期作为sql检索条件,抽出的数据写入对应的单元格,没抽到的数据为空。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值