首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)

第一种方法是从整个查询集生成统计值。比如,你想要计算所有在售书的平均价钱。Django的查询语法提供了一种方式描述所有图书的集合。...这意味着如果你有两个作者同名,那么他们原本各自的查询结果将被合并到同一个结果中;两个作者的所有评分都将被计算为一个平均分。...如果 values() 子句在 annotate() 子句之前,注解会被自动添加到结果集中;但是,如果 values() 子句作用于annotate() 子句之后,你需要显式地包含聚合列。...与默认排序或order_by()交互 在查询集中的order_by() 部分(或是在模型中默认定义的排序项) 会在选择输出数据时被用到,即使这些字段没有在values() 调用中被指定。...注意 你可能想知道为什么 Django 不删除与你无关的列。主要原因就是要保证使用 distinct()和其他方法的一致性。

1.7K30

Django 数据统计查询

本文描述如何使用 Django 查询来处理统计。 本文我们将使用以下模型。...例如,如果要计算所有书价中最高价和最低价,可以这样写: >>> from django.db.models import Avg, Max, Min, Count, Sum >>> Book.objects.aggregate...例如,要计算每本书的作者人数: 生成查询集中每一个项目的统计 第二种方法是为 查询集 中每个独立的对象生成统计。例如,当你检索一个书单时,可能想知道每本书有几个作者。...但是,当使用 values 子句来约束要统计的列时,返回的结果会有所不同。原先统计结果中,统计字段的值相同的项会分组合并统计。...缺省排序或 order_by() 子句的副作用 一个查询集中 order_by() 子句中的字段(或一个模型中缺省排序字段)会对输了数据产生影响,即使在 values() 中没有这些字段的定义时也同样会影响

2.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    django_2

    根据属性的类型确定以下信息 ·当前选择的数据库支持字段的类型 ·渲染管理表单时使用的默认html控件 ·在管理站点最低限度的验证 ·django会为表增加自动增长的主键列,每个模型只能有一个主键列..., 如果使用选项设置某属性为主键列后, 则django不会再生成默认的主键列 ·属性命名限制 ·遵循标识符规则 ·由于django的查询方式,不允许使用连续的下划线 库.../缓存集 查询集的缓存:每个查询集都包含一个缓存,来最小化对数据库的访问 在新建的查询集中,缓存首次为空,第一次对查询集求值,会发生数据缓存,django会将查询出来的数据做 一个缓存,并返回查询结果...eg:登陆 exists 判断查询集中是否有数据,如果有数据返回True没有反之 字段查询: 对sql中where的实现,作为方法filter(),exclude(),get()的参数...html控件 ·在管理站点最低限度的验证 ·django会为表增加自动增长的主键列,每个模型只能有一个主键列, 如果使用选项设置某属性为主键列后, 则django不会再生成默认的主键列

    3.6K30

    Django的聚合查询与原生操作

    聚合查询可以分为 整表聚合 分组聚合 整表聚合 ​ 不带分组的聚合查询是指将全部的数据进行集中统计查询。...Sum、Avg、Count、Max、Min等 from django.db.models import * MyModels.objects.aggregate(结果变量名=聚合函数('列')) #...结果变量名:值} 分组聚合 ​ 分组聚合是指通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值,即为查询集的每一项生成聚合。...通过先用查询结果Mymodels.objects.values查找要分组聚合的列 from django.db.models import * from apps.monitor.models import...=Count('id'))) 分组聚合的返回值为QuerySet 原生数据库操作 django也可以支持直接使用SQL语句进行查询数据库 查询:使用MyModels.objects.raw()进行数据库查询操作

    69020

    Django-Multitenant,分布式多租户数据库项目实战(PythonDjango+Postgres+Citus)

    通过将租户上下文添加到您的查询来实现轻松横向扩展,使数据库(例如 Citus)能够有效地将查询路由到正确的数据库节点。...这个库基于第三种设计,即让所有租户共享同一个表,它假设所有租户相关的模型/表都有一个 tenant_id 列来表示租户。...tenant_id 添加到引用查询(例如 product.purchases)和连接查询(例如 product__name)。...只需在身份验证时设置它,库将确保其余部分(将 tenant_id 过滤器添加到查询中)。上面的示例实现如下: 在您的设置中,您需要更新 MIDDLEWARE 设置以包含您创建的设置。...这将自动(不指定显式过滤器)将所有 django API 调用范围限定为单个租户。如果未设置 current_tenant,则使用没有租户范围的 默认/原生 API。

    2K10

    python设计模式5装饰器

    第二个值得学习的结构模式是装饰器模式,它允许程序员以透明的方式(影响其他对象)动态地给对象增加能力。...Django框架中有大量装饰器 限制某些HTTP请求对视图的访问 控制 按单个视图控制压缩 基于特定HTTP请求头控制缓存 Pyramid框架和Zope应用服务器也使用装饰器来实现各种目标。...将函数注册为事件订阅者 以特定权限保护一个方法 实现适配器模式 应用 装饰器模式在跨领域方面大放异彩: 数据验证 缓存 日志 监控 调试 业务规则 加密 使用修饰器模式的另一个常见例子是(Graphical...在GUI工具集中,我们希望能够将一些特性,比如边框、阴影、颜色以及滚屏,添加到组件/控件。 实例 所有的递归函数都可以从缓存中受益,所以让我们尝试返回前n个数字之和的函数number_sum()。...我们想计算前300个数字的和,而不是只计算前30个。

    18520

    Django学习笔记之Django ORM相关操作

    distinct(): 从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。...方法 create() 创建一个新的对象,保存对象,并将它添加到关联对象集之中,返回新创建的对象。...models.Author.objects.first().book_set.create(title="番茄物语", publish_date=datetime.date.today()) add() 把指定的model对象添加到关联对象集中...聚合查询和分组查询 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。 键的名称是聚合值的标识符,值是计算出来的聚合值。...Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较。

    3.6K40

    django 1.8 官方文档翻译: 2-6-4 数据库访问优化

    弄清楚你在执行什么查询以及你的开销花在哪里。你也可能想使用外部的项目,像django-debug-toolbar,或者直接监控数据库的工具。...理解查询集 理解查询集(QuerySets) 是通过简单的代码获取较好性能至关重要的一步。特别是: 理解查询集计算 要避免性能问题,理解以下几点非常重要: QuerySets是延迟的。...如果上面那些都不够用,你可以自己生成SQL语句: 使用QuerySet.extra() extra()是一个移植性更差,但是功能更强的方法,它允许一些SQL语句显式添加到查询中。...用唯一的被或索引的列来检索独立对象 有两个原因在get()中,用带有unique或者db_index的列检索独立对象。首先,由于查询经过了数据库的索引,所以会更快。...但是: 不要过度使用 count() 和 exists() 如果你需要查询集中的其他数据,就把它加载出来。

    1.1K30

    Django ORM那些相关操作

    distinct(): 从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。...方法 create() 创建一个新的对象,保存对象,并将它添加到关联对象集之中,返回新创建的对象。...models.Author.objects.first().book_set.create(title="番茄物语", publish_date=datetime.date.today()) add() 把指定的model对象添加到关联对象集中...聚合查询和分组查询 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。 键的名称是聚合值的标识符,值是计算出来的聚合值。...Q查询 F查询   在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较。

    2.3K60

    探索 PythonDjango 支持分布式多租户数据库,如 Postgres+Citus

    将租户列介绍给我们想要分发的缺少它的模型 更改分布式表的主键以包含租户列 更新模型以使用 TenantModelMixin 分发数据 将 Django 应用程序更新为范围查询 准备横向扩展多租户应用程序...将租户列引入属于帐户的模型 1.1 向属于某个帐户的模型引入该列 为了扩展多租户模型,查询必须快速定位属于一个帐户的所有记录。...更新模型以使用 TenantModelMixin 和 TenantForeignKey 接下来,我们将使用 django-multitenant 库将 account_id 添加到外键中,以便以后更轻松地查询应用程序...将 Django 应用程序更新为范围查询 上一节讨论的 django-multitenant 库不仅对迁移有用,而且对简化应用程序查询也很有用。该库允许应用程序代码轻松地将查询范围限定为单个租户。...它会自动将正确的 SQL 过滤器添加到所有语句中,包括通过关系获取对象。

    2.1K10

    Django之ORM对数据库操作

    distinct(): 从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。...方法 create() 创建一个新的对象,保存对象,并将它添加到关联对象集之中,返回新创建的对象。...models.Author.objects.first().book_set.create(title="番茄物语", publish_date=datetime.date.today()) add() 把指定的model对象添加到关联对象集中...聚合查询和分组查询 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。 键的名称是聚合值的标识符,值是计算出来的聚合值。...Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较。

    1.3K110

    Django模型model

    会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列 属性命名限制 不能是python的保留关键字 由于django的查询方式,不允许使用连续的下划线...FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image AutoField:一个根据实际ID自动增长的IntegerField,通常不指定 如果不指定,一个主键字段将自动添加到模型中...模型类中字段选项 通过字段选项,可以实现对字段的约束 在字段对象时通过关键字参数指定 null:如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False blank:如果为True...模型类之间关系 关系的类型包括 ForeignKey:一对多,将字段定义在多的端中 ManyToManyField:多对多,将字段定义在两端中 OneToOneField:一对一,将字段定义在任意一端中...first():返回第一个对象 last():返回最后一个对象 exists():判断查询集中是否有数据,如果有则返回True 限制查询集,如果获取一个对象,直接使用[0] 模型查询集的缓存 这构成了两个查询集

    15310

    为什么 Django 能持续统治 Python 开发世界

    Django主要特点 Django“自备军需”(Batteries-Included) ?...这就是Django的力量。 该框架使您能够快速轻松地从应用模型生成管理站点。 代码设计 与大多数 Web 框架相反,Django 通过使用称为 app 的东西,更容易地将新功能添加到产品中。...因此,开发者可以感受到 Django 鼓励大家编写模块化的代码。 Django对ORM的完善支持 ? Django的对象关系映射 (ORM) 对数据库进行了完善的支持。...所以,它用于查询数据库所需的数据时,没有处理结构化查询语言(SQL)的麻烦。...然后,您可以从应用程序的其他部分动态地更改这两个内容之间的组件。 简单可读的网址 很难正确阅读在PHP os ASP中开发的URL?

    1.2K30

    为什么 Django 能持续统治 Python 开发世界

    这就是Django的力量。 该框架使您能够快速轻松地从应用模型生成管理站点。 代码设计 与大多数 Web 框架相反,Django 通过使用称为 app 的东西,更容易地将新功能添加到产品中。...因此,开发者可以感受到 Django 鼓励大家编写模块化的代码。 Django对ORM的完善支持 Django的对象关系映射 (ORM) 对数据库进行了完善的支持。...所以,它用于查询数据库所需的数据时,没有处理结构化查询语言(SQL)的麻烦。...然后,您可以从应用程序的其他部分动态地更改这两个内容之间的组件。 简单可读的网址 很难正确阅读在PHP os ASP中开发的URL?...Django的人气不断飙升,可能仍然是Python开发人员最受欢迎的选择。 您之前的项目是否用过Django? 你真的认为Django是Python开发人员最好的框架吗?

    1.1K30

    【Django】 开发:数据库操作和后台管理

    (字典表示) 方法: values (‘列 1’, ‘列 2’) 用法: MyModel.objects.values (…) 作用:查询部分列的数据并返回 select 列 1, 列 2 from...(id=1) auth.delete() except: print(删除失败) 删除查询结果集 步骤 查找查询结果集中满足条件的全部 QuerySet 查询集合对象 调用查询集合对象的...聚合查询是指对一个数据表中的一个字段的数据进行部分或全部进行统计查询,查bookstore_book数据表中的全部书的平均价格,查询所有书的总个数等,都要使用聚合查询 不带分组聚合 不带分组的聚合查询是指导将全部数据进行集中统计查询...title')) print("数据记录总个数是:", result['mycnt']) print("result=", result) # {"mycnt": 10} 分组聚合 分组聚合是指通过计算查询结果中每一个对象所关联的对象集合...cur.execute('执行SQL语句', '拼接参数') 示例 # 用SQL语句将id 为 10的 书的出版社改为 "XXX出版社" from django.db import connection

    4.1K40

    HBase的数据模型是什么样的?

    不同列族下的列限定符可以重复,但同一列族下的列限定符必须唯一。列限定符可以动态地添加到列族中,而不需要提前定义。...HBase的数据模型还具有以下特点: 灵活的列数:HBase的表中可以有非常多的列,甚至可以动态地添加新的列。...列存储:HBase将数据按列存储在磁盘上,而不是按行存储。这种存储方式使得HBase能够高效地处理大规模数据的读写操作。...当需要查询某一列的数据时,HBase只需要读取该列的数据,而不需要读取整行的数据,从而提高了查询效率。 版本控制:HBase可以为每个单元格(cell)存储多个版本的数据。...综上所述,HBase的数据模型是面向列的,通过表、行、列族和列限定符来组织和存储数据。它具有灵活的列数、列存储和版本控制等特点,适用于存储和处理海量数据,并且能够满足实时查询的需求。

    4800

    Web | Django 与数据库交互,你需要知道的 9 个技巧

    对开发人员来说,Django的ORM 确实非常实用,但是将数据库的访问抽象出来本身是有成本的,那些愿意在数据库中探索的开发人员,经常会发现修改 ORM 的默认行为可以带来性能的提升。...在本文中,我将分享在 Django 中使用数据库的 9 个技巧。 1....应该没有人真正在生产中只用一个工作进程来运行 Django,但是我们仍然希望确保一个查询不会浪费太多资源太久。 在大多数 Django 应用程序中,大部分时间都花在等待数据库查询上了。...当 select_for_update 与 select_related 一起使用时,Django 将尝试获取查询中所有表的锁。 我们用来获取事务的代码尝试获取事务表、用户、产品、类别表的锁。...但是现在,通过 Django 1.11 支持索引,我们可以轻松地将新类型的索引整合到我们的应用程序中,使它们更轻,更快。

    2.9K40
    领券