Django分表操作及FQ方法

Posted wuzhengzheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django分表操作及FQ方法相关的知识,希望对你有一定的参考价值。

聚合

aggregate(*args, **kwargs)

# 计算所有图书的平均价格
 from django.db.models import Avg
 Book.objects.all().aggregate(Avg(price))
#{‘price__avg‘: 34.35}

aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。

Book.objects.aggregate(average_price=Avg(price))
#{‘average_price‘: 34.35}

如果你希望生成不止一个聚合,你可以向aggregate()子句中添加另一个参数。所以,如果你也想知道所有图书价格的最大值和最小值,可以这样查询:

from django.db.models import Avg, Max, Min
Book.objects.aggregate(Avg(price), Max(price), Min(price))
#{‘price__avg‘: 34.35, ‘price__max‘: Decimal(‘81.20‘), ‘price__min‘: Decimal(‘12.99‘)}
技术分享图片
  # 查询所有书籍的平均价格
    from django.db.models import Avg,Count,Max,Min
    ret=Book.objects.all().aggregate(Avg(price))
    # {‘price__avg‘: 202.896}
    # 可以改名字
    ret=Book.objects.all().aggregate(avg_price=Avg(price))
    # 统计平均价格和最大价格
    ret=Book.objects.all().aggregate(avg_price=Avg(price),max_price=Max(price))
    # 统计最小价格
    ret = Book.objects.all().aggregate(avg_price=Avg(price), min_price=Min(price))
    # 统计个数和平均价格
    ret = Book.objects.all().aggregate(avg_price=Avg(price), max_price=Max(price),count=Count(price))
    ret = Book.objects.all().aggregate(avg_price=Avg(price), max_price=Max(price),count=Count(nid))
    print(ret)
案例

 


 

以上是关于Django分表操作及FQ方法的主要内容,如果未能解决你的问题,请参考以下文章

Django ORM 之FQ查询与事务

Django:表多对多查询聚合分组FQ查询事务

Mybatis批量Insert及水平分表

分库分表概述及方式

分库分表概述及方式

discuz X3.1 关于分表 和 分表数据迁移