将大的查询集分成小的块,并在不破坏RAM的情况下对它们进行迭代。

django-chunkator的Python项目详细描述


将大查询集分成小块,并在上面迭代而不杀死它们 你的公羊。

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

使用以下所有组合进行测试:

  • Python:2.7、3.5、3.6、3.7
  • django:1.11、2、2.1,大师级

用法

fromchunkatorimportchunkatorforiteminchunkator(LargeModel.objects.all(),200):do_something(item)

此工具旨在处理django queryset。

模型必须定义一个pk字段(默认情况下是这样的,但是 有时它可以被重写)并且这个pk必须是唯一的。django- chunkator已使用常规pks和 Uuid作为主键。

您还可以使用values()

fromchunkatorimportchunkatorforiteminchunkator(LargeModel.objects.values('pk','name'),200):do_something(item)

重要

如果使用values()youhave至少添加“pk”字段 否则,chunkator将抛出 MissingPkFieldException

警告

这不会加速您的进程。不是一个大问题, 您将有几个小问题。这样可以节省内存,因为 在循环之前,您不会加载一个巨大的queryset结果。

如果要直接操作页面,可以使用chunkator页面

fromchunkatorimportchunkator_pagequeryset=LargeModel.objects.all().values('pk')forpageinchunkator_page(queryset,200):launch_some_task([item['pk']foriteminpage])

许可证

麻省理工学院执照。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
正则表达式Java使用关键字拆分字符串   Neo4j Java API模式索引范围查找?   java访问JButton[]   java如何混淆tomcat日志文件中的请求属性   apache运行CGI Java程序   java从一个Eclipse插件开始,我如何通过编程使Eclipse编辑某个文件?   从php中的SQL数据库到Java中的多个值作为单独的变量   java如何在多个osgi捆绑包之间共享资源   datetime Java time,无法从历元秒解析年份   java无法在安卓应用程序中使用morpho指纹扫描仪设备捕获指纹   java使用groovy/ratpack发送电子邮件   javascript在jsp页面中添加验证,但在控制台中仍然显示一些错误   java如何修复com。mysql。jdbc。DocsConnectionPropsHelper   java AlertDialog dispatchTouchEvent