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')
相关推荐
a1117763 小时前
医院挂号预约系统(开源 Fastapi+vue2)
前端·vue.js·python·html5·fastapi
0思必得03 小时前
[Web自动化] Selenium处理iframe和frame
前端·爬虫·python·selenium·自动化·web自动化
摘星编程5 小时前
OpenHarmony + RN:Calendar日期选择功能
python
Yvonne爱编码5 小时前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
一方_self5 小时前
了解和使用python的click命令行cli工具
开发语言·python
小芳矶5 小时前
Dify本地docker部署踩坑记录
python·docker·容器
2301_822366356 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
小郎君。6 小时前
【无标题】
python
喵手7 小时前
Python爬虫实战:数据治理实战 - 基于规则与模糊匹配的店铺/公司名实体消歧(附CSV导出 + SQLite持久化存储)!
爬虫·python·数据治理·爬虫实战·零基础python爬虫教学·规则与模糊匹配·店铺公司名实体消岐
喵手7 小时前
Python爬虫实战:国际电影节入围名单采集与智能分析系统:从数据抓取到获奖预测(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集国际电影节入围名单·从数据抓取到获奖预测