Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python postgresql django中的大致行数_Python_Django_Database_Postgresql_Database Table - Fatal编程技术网

Python postgresql django中的大致行数

Python postgresql django中的大致行数,python,django,database,postgresql,database-table,Python,Django,Database,Postgresql,Database Table,我有一个与django连接的postgresql数据库。在数据库中有很多大表,我需要它们的行数。由于表的大小很大,执行此操作需要很多时间 我发现可以从pg\u类中检索近似计数。在Django中有没有办法做到这一点而不执行原始查询 我建议为这个名为。这个包提供了一个管理器,可以进行快速计数 您可以使用pip安装软件包(例如在您的本地环境中): 然后,您可以将FuzzyCountManager添加到要获得近似计数的模型中: from django.db import models from fuzz

我有一个与django连接的postgresql数据库。在数据库中有很多大表,我需要它们的行数。由于表的大小很大,执行此操作需要很多时间


我发现可以从
pg\u类
中检索近似计数。在Django中有没有办法做到这一点而不执行原始查询

我建议为这个名为。这个包提供了一个管理器,可以进行快速计数

您可以使用
pip
安装软件包(例如在您的本地环境中):

然后,您可以将
FuzzyCountManager
添加到要获得近似计数的模型中:

from django.db import models
from fuzzycount import FuzzyCountManager

class SomeModel(models.Model):

    #  ... (some fields) ...

    objects = models.Manager()
    approx = FuzzyCountManager()
如果您使用
.filter(..)
,Django将计算实数,因为
pg_class
表只存储整个表的大约行数,因此:

SomeModel.approx.filter(foo=bar).count()
将需要更多的时间(取决于索引等)

您也可以直接“修补”
对象
管理器,但获取实际记录数可能会更困难:

from django.db import models
from fuzzycount import FuzzyCountManager

class SomeModel(models.Model):

    #  ... (some fields) ...

    objects = FuzzyCountManager()
来自django.db导入模型的

从fuzzycount导入FuzzyCountManager
类模型(models.Model):
#  ... (一些领域)。。。
objects=FuzzyCountManager()

如果您将后端数据库更改为另一个数据库,则
FuzzyCountManager(..)
将充当正常的
管理器,因此,如果您以后更改数据库系统,您不必重写管理器。

我建议为这个命名的数据库使用专用的包。这个包提供了一个管理器,可以进行快速计数

您可以使用
pip
安装软件包(例如在您的本地环境中):

然后,您可以将
FuzzyCountManager
添加到要获得近似计数的模型中:

from django.db import models
from fuzzycount import FuzzyCountManager

class SomeModel(models.Model):

    #  ... (some fields) ...

    objects = models.Manager()
    approx = FuzzyCountManager()
如果您使用
.filter(..)
,Django将计算实数,因为
pg_class
表只存储整个表的大约行数,因此:

SomeModel.approx.filter(foo=bar).count()
将需要更多的时间(取决于索引等)

您也可以直接“修补”
对象
管理器,但获取实际记录数可能会更困难:

from django.db import models
from fuzzycount import FuzzyCountManager

class SomeModel(models.Model):

    #  ... (some fields) ...

    objects = FuzzyCountManager()
来自django.db导入模型的

从fuzzycount导入FuzzyCountManager
类模型(models.Model):
#  ... (一些领域)。。。
objects=FuzzyCountManager()

如果您将后端数据库更改为另一个数据库,则
FuzzyCountManager(..)
将充当正常的
管理器
,以防以后更改数据库系统,您不必重写管理器。

您可以使用
FuzzyCountManager
:您可以使用
FuzzyCountManager
:我不想直接“修补”对象,因为已经添加了自定义管理器
approx=FuzzyCountManager()
但出现错误:
AttributeError:“QuerySet”对象没有属性“approw”
@Miguel:您可能正在使用
SomeModel.objects.approw
,但它是一个
QuerySet
,因此无法工作。请注意,
.objects
仅在模型上定义,而不是在由该模型产生的管理器或
QuerySet
上定义。@Miguel:不过,您只需在模型中创建一个管理器
approx=FuzzyCountManager()
,以及另一个
ojbects=models.manager()
,因此,您可以使用
SomeModel.approx
来大致计算元素的数量。好的,谢谢。但是queryset伯爵呢?这就是我需要的。@Miguel:你可以用
SomeModel.objects.count()
精确计数,或者用
SomeModel.About.count()
近似计数,如果你用第一种方法(第二个代码片段)实现的话。我不想直接“修补”对象,因为已经有了一个自定义的管理器,添加了
About=FuzzyCountManager()
但出现错误:
AttributeError:“QuerySet”对象没有属性“approw”
@Miguel:您可能正在使用
SomeModel.objects.approw
,但它是一个
QuerySet
,因此无法工作。请注意,
.objects
仅在模型上定义,而不是在由该模型产生的管理器或
QuerySet
上定义。@Miguel:不过,您只需在模型中创建一个管理器
approx=FuzzyCountManager()
,以及另一个
ojbects=models.manager()
,因此,您可以使用
SomeModel.approx
来大致计算元素的数量。好的,谢谢。但是queryset伯爵呢?这就是我所需要的。@Miguel:你可以用
SomeModel.objects.count()
精确计数,或者用
SomeModel.About.count()
近似计数,如果你用第一种方法(第二个代码片段)实现的话。