为PostgreSQL数据库表提供快速/模糊计数的Django模型管理器。

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


Stephen McDonald

简介

在postgresql 9.2之前,COUNT查询通常需要扫描 数据库表中的每一行。有了数百万行,这个可以变成 很慢。一种解决方法是在 PostgreSQL用于近似行计数,在许多情况下是 可接受的权衡。

给定一个名为bigdata的表,下面的查询将返回 近似行计数:

SELECT reltuples FROM pg_class WHERE relname = 'bigdata';

您可以阅读有关slow COUNT queries in PostgreSQL的更多信息 在PostgreSQL维基中。

django-postgres-fuzzycount提供的是一种使用此 直接在django模型管理器中进行。原来是 用于在kouio RSS reader中显示统计数据,这是google reader的一个流行替代品,它获得了超过500万篇新闻文章 在它发布的第一周的数据库中。

安装

安装django-postgres-fuzzycount的最简单方法是直接安装 从pypi使用pip运行以下命令:

$ pip install -U django-postgres-fuzzycount

否则,您可以直接从源代码下载并安装它:

$ python setup.py install

用法

通过在django模型上使用fuzzycount.FuzzyCountManager, 当查询时,其{TT6}$方法将返回一个近似值。 没有任何WHEREHAVING子句的PostgreSQL表:

from django.db import models
from fuzzycount import FuzzyCountManager

class BigData(models.Model):

    big = models.BooleanField(default=True)
    data = models.TextField()

    objects = FuzzyCountManager()

BigData.objects.count()  # Uses fuzzycount
BigData.objects.filter(id__gt=9000).count()  # Doesn't use fuzzycount

fuzzycount.FuzzyCountManager还检查数据库引擎 正在使用,并且仅在使用时才应用近似计数查询 postgresql,因此可以使用其他数据库后端,其行为如下 通常(对于的不同定义,通常,取决于数据库:-)。

灵感

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

推荐PyPI第三方库


热门话题
java OpenGL着色器可在桌面上编译,但不能在Android上编译   java调度器。forward()生成HTTP 500   java从另一个类访问类   java EasyModBus Modbus客户端。ReadHoldingRegisters()返回意外的0   java 安卓bitmap低质量问题   带有signaturePropFile的java Axis2/rampart加密问题   Java,解析xml属性的原始未转换值。Jaxson或jaxb   爪哇太阳报。网inetaddr。ttl属性导致AccessControlException   java简单计算器无法通过println   线程安全java servlet   java从文本文件中获取特定信息   java打包具有字符串数组的哈希映射   java SQL合并以更新值或将值插入到同一个表中   java springrabitmq和线程本地何时是调用clean方法的好时机   windows java在我的64位计算机的任务管理器中显示为32位   java不确定使用什么值来初始化我的神经网络   java Maven插件下载文件