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')
相关推荐
2601_956139426 分钟前
文旅行业品牌全案公司哪家强
大数据·人工智能·python
hrhcode7 分钟前
【LangGraph】二.State 和 Node 的设计细节
python·ai·langchain·langgraph·ai框架
dfdfadffa16 分钟前
如何创建仅在首次订阅时执行一次计算的 RxJS 懒加载 Observable
jvm·数据库·python
m0_6245785920 分钟前
SQL分组后如何计算移动平均值_利用窗口函数AVG配合ROWS
jvm·数据库·python
2401_8242226927 分钟前
如何修复待办事项列表无法添加任务的 JavaScript 错误
jvm·数据库·python
CHANG_THE_WORLD1 小时前
<Fluent Python > Unicode 文本与字节
开发语言·python
测试员周周1 小时前
【AI测试系统】第1篇:LangGraph 实战:用 State Graph 搭建 AI测试流水线(4 步编排 + RAG 增强 + 完整代码)
linux·windows·python·功能测试·microsoft·单元测试·多轮对话
噜噜噜阿鲁~1 小时前
python学习笔记 | 8.2、函数式编程-返回函数
笔记·python·学习
中二痞1 小时前
下载Python 版本,环境变量变更以及PyCharm更换python版本
开发语言·python·pycharm