跳转到主要内容

将大查询集分割成小块,并在不耗尽内存的情况下遍历它们。

项目描述

将大查询集分割成小块,并在不耗尽内存的情况下遍历它们。

https://travis-ci.org/peopledoc/django-chunkator.svg

测试了以下所有组合

  • Python: 3.5, 3.6, 3.7, 3.8

  • Django: 2, 2.1, 2.2, 3.0, master

使用方法

from chunkator import chunkator
for item in chunkator(LargeModel.objects.all(), 200):
    do_something(item)

本工具旨在在 Django 查询集中工作。

您的模型 必须 定义一个 pk 字段(这通常是默认行为,但有时可能被覆盖),并且这个 pk 必须是唯一的。 django- chunkator 已与 PostgreSQL 和 SQLite 进行测试,使用常规 PK 和 UUID 作为主键。

您也可以使用 values()

from chunkator import chunkator
for item in chunkator(LargeModel.objects.values('pk', 'name'), 200):
    do_something(item)

如果您想直接操作页面,可以使用 chunkator_page

from chunkator import chunkator_page
queryset = LargeModel.objects.all().values('pk')
for page in chunkator_page(queryset, 200):
    launch_some_task([item['pk'] for item in page])

许可

MIT 许可证。

项目详细信息


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

django-chunkator-2.0.0.tar.gz (3.6 kB 查看哈希值)

上传时间

构建分布

django_chunkator-2.0.0-py3-none-any.whl (3.3 kB 查看哈希值)

上传时间 Python 3

由以下赞助商支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面