mysql和django的近似查询计数。

django-mysql-fuzzycount的Python项目详细描述


使用mysql时,counting all rows在大型innodb表上非常昂贵。如果没有调用额外的约束,则该调用将返回一个近似值。在所有其他情况下,它的行为应该与queryset完全相同。

这只适用于mysql,对于所有其他引擎来说都是正常的。

安装

使用pip

$ pip install -U django-mysql-fuzzycount

用法

有几种方法可以使用FuzzyCountQuerySet

您可以在您的django机型上导入并使用提供的FuzzyCountManager

from django.db import models

from mysql_fuzzycount.managers import FuzzyCountManager

class Choice(model.Model):
    objects = FuzzyCountManager()

    # ...

然后,在没有任何约束的情况下对^ {TT6} $模型进行计数,将近似总计数:

>>> Choice.objects.count()  # approximation
100
>>> Choice.objects.filter(votes__gt=10).count()  # not an approximation
28

另一个常见的问题是模型的管理计数。有一个基类ModelAdmin,您可以在admin.py文件中对其进行子类化,以防止加载管理页时出现昂贵的COUNT(*)查询。在admin.py中为您的一个型号:

from django.contrib import admin

from mysql_fuzzycount.admin import FuzzyCountModelAdmin

from myapp.models import Choice


class ChoiceAdmin(FuzzyCountModelAdmin):
    pass

admin.site.register(Choice, ChoiceAdmin)

现在,当您为AD{TT6}$$加载ADMIN页时,分页的计数将是近似的。

测试

它已经在生产中测试过了,但是没有单元或集成测试。

许可证

版权所有©2013,Educreations,Inc,根据麻省理工学院许可。

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

推荐PyPI第三方库


热门话题
JavaPax考试:从非标准Maven存储库解析Karaf特性存储库(XML文件)   java Spring启动Bean创建异常   java中将ArrayList转换为数组的方法   Android Studio的java Unity插件。   java在CheckStyle中从方法计数中排除getter和setter   HibernateJava。sql。SQLSyntaxErrorException:表/视图“序列”不存在   与命令行程序Java vs C通信   java WebView膨胀异常   java在O(n)java8流中寻找两个列表的交集   java使用Gradle运行单元测试时,最大堆大小在哪里设置?   ssl加载java应用程序(CXF)内的jks文件   CI:Jenkins Git:Simple Java项目:希望在特定时间在脚本上发送消息   java根据位置更改数字   java按数值排序字符串数组   macos java版本“1.6.0_65”是否与java 6模棱两可?   Cassandra中的java时间戳