Python迭代器-大数据量的处理

一 生成器的实际使用(大量数据的导出)

python 复制代码
#分批导出数据然后分批写入excel
import pandas as pd
import openpyxl
from openpyxl.utils.dataframe import dataframe_to_rows


def execute_query(query):
    # 假设这是执行 SQL 查询的函数
    # 返回查询结果
    pass


def fetch_products_in_batches(batch_size=1000):
    offset = 0
    while True:
        query = f"SELECT * FROM products LIMIT {batch_size} OFFSET {offset}"
        results = execute_query(query)
        if not results:
            break
        yield results
        offset += batch_size


def export_to_excel(generator, filename):
    # 创建一个新的 Excel 工作簿
    wb = openpyxl.Workbook()
    ws = wb.active

    # 写入表头
    first_batch = next(generator)
    df = pd.DataFrame(first_batch)
    for r in dataframe_to_rows(df, index=False, header=True):
        ws.append(r)

    # 写入后续批次的数据
    for batch in generator:
        df = pd.DataFrame(batch)
        for r in dataframe_to_rows(df, index=False, header=False):
            ws.append(r)

    # 保存工作簿
    wb.save(filename)


# 主逻辑
generator = fetch_products_in_batches()
export_to_excel(generator, 'products.xlsx')
相关推荐
十二月将至17 小时前
python读取文件的常用操作
网络·python
爱砸键盘的懒洋洋17 小时前
Python第四课:数据类型与转换
开发语言·python
Dyan_csdn18 小时前
Python系统设计选题-49
开发语言·python
2401_8315017318 小时前
Python学习之day01学习(变量定义和数据类型使用)
开发语言·python·学习
倔强青铜三19 小时前
苦练Python第61天:logging模块——让Python日志“有迹可循”的瑞士军刀
人工智能·python·面试
倔强青铜三19 小时前
苦练Python第60天:json模块——让Python和JSON“无缝互译”的神兵利器
人工智能·python·面试
孤客网络科技工作室19 小时前
Python - 100天从新手到大师:第二十七天Python操作PDF文件
开发语言·python·pdf
悬剑131419 小时前
python简易程序跑NLPIR模型
python·nlpir
wheeldown20 小时前
【Leetcode高效算法】用双指针策略打破有效三角形的个数
python·算法·leetcode
真的想不出名儿20 小时前
登录前验证码校验实现
java·前端·python