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')
相关推荐
这个人懒得名字都没写4 小时前
Python包管理新纪元:uv
python·conda·pip·uv
有泽改之_4 小时前
leetcode146、OrderedDict与lru_cache
python·leetcode·链表
是毛毛吧5 小时前
边打游戏边学Python的5个开源项目
python·开源·github·开源软件·pygame
三途河畔人5 小时前
Pytho基础语法_运算符
开发语言·python·入门
独行soc6 小时前
2025年渗透测试面试题总结-275(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮
番石榴AI8 小时前
java版的ocr推荐引擎——JiaJiaOCR 2.0重磅升级!纯Java CPU推理,新增手写OCR与表格识别
java·python·ocr
时光轻浅,半夏挽歌8 小时前
python不同格式文件的读写方式(json等)
python·json
测试人社区-千羽9 小时前
边缘计算场景下的智能测试挑战
人工智能·python·安全·开源·智能合约·边缘计算·分布式账本
抽象带篮子9 小时前
Pytorch Lightning 框架运行顺序
人工智能·pytorch·python
哇哈哈&9 小时前
安装wxWidgets3.2.0(编译高版本erlang的时候用,不如用rpm包),而且还需要高版本的gcc++19以上,已基本舍弃
linux·数据库·python