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')
相关推荐
阿荻在肝了15 小时前
Agent学习四:RAG 技术应用
python·学习·agent
ZC跨境爬虫15 小时前
Base64编码详解(含JS_Python实现+实战逆向案例)
前端·javascript·python
小陈工16 小时前
Python Web开发入门(八):用户认证系统实现,给你的应用加上安全锁
开发语言·前端·数据库·python·安全·django·sqlite
铅笔侠_小龙虾16 小时前
Miniconda + Poetry 实战
开发语言·python
深海空无一人16 小时前
python基础
开发语言·python
极光代码工作室16 小时前
基于NLP的电商评论情感分析系统
python·深度学习·自然语言处理·情感分析·文本挖掘
csdn2015_16 小时前
List<DocumentMetadata> 取所有docid,组成List<String>
windows·python·list
清水白石00816 小时前
《Python 静态检查链:格式化、Lint、类型检查、安全扫描全攻略——CI 阻断策略与团队平衡实践》
python·安全·ci/cd
soragui16 小时前
【Python】第 2 章:Python 对象模型
开发语言·python
高洁0117 小时前
大模型Prompt实战:精准生成专业技术文档
人工智能·python·数据挖掘·transformer·知识图谱