python读取电商出入库excel数据,并处理,将最终结果存入MySQL数据库实战案例

有如下数据,需要对数据合并处理,输出到数据库。

数据样例:👇

img

excel内容:

出入库统计表河北库.xlsx:

img

出入库统计表天津库.xlsx:

img

01实现过程

import pandas as pd
# 导入 pandas 库,通常用 pd 作为别名,方便后续使用。
from sqlalchemy import create_engine
# 从 sqlalchemy 库中导入 create_engine 函数,用于创建数据库连接引擎。

def read_excel_data(file_name):
    # 定义一个名为 read_excel_data 的函数,接受一个文件名作为参数。
    # 读取整个 Excel 文件
    df = pd.read_excel(file_name, header=None)
    # 使用 pandas 的 read_excel 函数读取指定文件名的 Excel 文件,header=None 表示没有列名行。

    # 找到服装类和食品类的起始行
    clothing_start = df[df[0] == '1、服装类'].index[0] + 1
    food_start = df[df[0] == '2、食品类'].index[0] + 1
    # 通过筛选数据帧中特定值的行,找到服装类和食品类的起始行索引,并加 1 作为后续读取的起始行号。

    # 读取服装类数据
    clothing_df = pd.read_excel(file_name, header=clothing_start, nrows=2)
    # 使用 pandas 的 read_excel 函数读取服装类数据,指定起始行号和读取的行数。

    # 读取食品类数据
    food_df = pd.read_excel(file_name, header=food_start, nrows=2)
    # 使用 pandas 的 read_excel 函数读取食品类数据,指定起始行号和读取的行数。

    return clothing_df, food_df
    # 返回读取的服装类和食品类数据帧。

# 读取河北库和天津库的数据
df1_clothing, df1_food = read_excel_data('出入库统计表河北库.xlsx')
df2_clothing, df2_food = read_excel_data('出入库统计表天津库.xlsx')
# 分别调用 read_excel_data 函数读取河北库和天津库的 Excel 文件,得到服装类和食品类的数据帧。

# 合并服装类数据
clothing_combined = pd.concat([df1_clothing, df2_clothing])
clothing_combined['类型'] = '服装类'
# 使用 pandas 的 concat 函数合并河北库和天津库的服装类数据帧,并添加一个新列表示类型为服装类。

# 合并食品类数据
food_combined = pd.concat([df1_food, df2_food])
food_combined['类型'] = '食品类'
# 使用 pandas 的 concat 函数合并河北库和天津库的食品类数据帧,并添加一个新列表示类型为食品类。

# 定义列顺序
clothing_columns = ['库房', '类型', '出入库', '男士上衣', '男士下装', '女士上装', '女士下装', '童装',
                    '男士内衣', '女士内衣', '运动装', '工作服', '户外服装', '特殊服装', '冬装', '夏装', '合计']
food_columns = ['库房', '类型', '出入库', '酒水', '调料', '肉类', '合计']
# 分别定义服装类和食品类数据帧的列顺序。

# 处理服装类数据
clothing_result = clothing_combined.reindex(columns=clothing_columns)
# 使用 reindex 函数按照指定的列顺序重新排列服装类数据帧的列。

# 处理食品类数据
food_result = food_combined.reindex(columns=food_columns)
# 使用 reindex 函数按照指定的列顺序重新排列食品类数据帧的列。

# 打印最终结果
print("2024 年产品出入库统计")
print("\n1. 服装类")
print(clothing_result.to_string(index=False))
print("\n2. 食品类")
print(food_result.to_string(index=False))
# 打印标题和服装类、食品类数据帧的内容,to_string(index=False) 表示不打印行索引。

# 连接 MySQL 数据库
engine = create_engine('mysql+pymysql://root:root@127.0.0.1:3306/test01')
# 使用 create_engine 函数创建一个连接 MySQL 数据库的引擎,指定连接字符串。

# 将数据写入 MySQL 数据库
clothing_result.to_sql('clothing_table', con=engine, if_exists='replace', index=False)
food_result.to_sql('food_table', con=engine, if_exists='replace', index=False)

02最终结果

发现已经将数据写入到MySQL数据库中了:

img
img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值