zoukankan      html  css  js  c++  java
  • django orm 分组查询 F查询 Q查询

    分组查询

    • 原生SQL:select avg(price) from book group by publish_id;

    • orm中的分组

      统计每个出版社出版的书籍的平均价格
      ret=models.Book.objects.values('publishs_id').annotate(a=Avg('price'))
      
      ret=models.Publish.objects.annotate(a=Avg('book__price')).values('a')
      
    • F查询与Q查询

      • F查询:自己单单里面的字段比较

        from django.db.models import F,Q
        # 点赞数大于评论数
        models.Book.objects.filter(good__gt=F('comment'))
        #  点赞数大于评论数+20
        models.Book.objects.filter(good__gt=F('comment')+20)
        # 让表里的字段price都加20
        models.Book.objects.all().update(price=F('price')+20)
        
      • Q查询:结合filter函数 和_gt lt等下划线方法一同使用

        # 评论数 点赞数都大于80的
        models.Book.objects.filter(good__gt=80,comment__gt=80)
        # 评论数大于等于80 或 点赞数大于等于80的
        models.Book.objects.filter(Q(good_gte=80)|Q(good_gte=80))
        
        
    • orm执行原生SQL语句

      models.Publish.objects.raw('select * from app01_publish;')  # <RawQuerySet: select * from app01_book>
      
    • 直接执行自定义的SQL语句

      from django.db import connection,connections
      cursor = connection.cursor()
      cursor.execute(sql,[1,])
      cursor.fetchall()
      
    • 展示SQL

      from django.db import connection
      print(connection.queries)
      
    • orm练习

      • 查询每个作者的姓名以及出版的书的最高价格

        ret = models.Author.objects.annotate(a=Max('book__price')).values('name','a')
        
      • 查询作者id大于2或者作者年龄大于等于20岁的女作者的姓名以及出版的书的最高价格

        ret = models.Author.objects.filter(Q(id__gt=2)|Q(age__gtq=20,sex='female')).annotate(a=Max('book__price')).values('name','a')
        
      • 查询每个作者出版的书的最高价格的平均值

        ret = models.Author.objects.annotate(a=Max('book__price')).aggregate(Avg('a'))
        
  • 相关阅读:
    【转】130 个相见恨晚的超实用网站,一次性分享出来
    基于maven testng extentreport git jenkins 持续自动化测试
    TestNG与ExtentReport集成
    Jenkins集成jSonarQube
    SonarQube & Sonar Scanner
    Jenkins集成jacoco收集单元测试覆盖率
    Jenkins集成jacoco收集集成测试覆盖率
    Jacoco收集单元测试、集成测试和系统功能测试覆盖率
    SoanrQube7.4安装(Window)
    SoanrQube使用maven进行代码分析
  • 原文地址:https://www.cnblogs.com/he-qing-qing/p/11245471.html
Copyright © 2011-2022 走看看