• mysql数据库_models 必知必会13条


    必知必会13条

    all  ***  # 取出所有
    Book.objects.all().delete()  ##删除所有对象 删除数据记录
    
    filter  ***  # 过滤
    Book.objects.filter(pk=1).update(price=190)  
    修改主键为1的书籍对象,的字段price为190,可能是批量修改
    
    get  # 过滤 取出对象, 多个或没有会报错
    Book.objects.filter(pk=1).update(price=190) 
    
    exclude  # 取反 ,跟filter相反
     books = models.Book.objects.exclude(id=3)  # 返回QuerySet类型,取非
    
    order_by # 排序 默认升序,降序加-
    books = models.Book.objects.order_by("-price")  # 默认使用升序, 降序在前面加-
    
    reverse  # 反转
    books = models.Book.objects.order_by('price').reverse()  # 反转
    
    count *** # 计数
    
    first ***  # 取出第一个  搭配filter excude 使用, 
    book_obj = models.Book.objects.filter(pk=pk).first()
    
    last  # 取出最后一个
    
    exists  # 判断是否存在
    books = models.Book.objects.filter(id=8).exists()  # 判断是否存在,返回布尔
    
    values ***  # 返回queryset 里面字典
    books = models.Book.objects.values("title", "price")  # QuerySet  里面是字典
    
    ##猜测:models.Book.objects.all().values('title','price')
    #取出所有实例化化表对象, 然后只取出 title和price的数值
    
    values_list *** # 返回里面元组
    books = models.Book.objects.values_list("title", "price")  #QuerySet 里面是元祖
    
    distinct  # 去重
    books = models.Book.objects.values_list("price").distinct()
    
    
    ##可以通过print输出打印, 查看是什么数据类型

    2.分组查询和聚合查询

    books = models.Book.objects.aggregate(avg_price=Avg("price"))  # 指定字典的key为avg_price  返回的是字典  搭配使用的还有
    from django.db.models import Avg, Max, Min
    
    
     查询每一个部门名称以及对应的员工数
    models.Emp.objects.values('dep').annotate(c=Count('id'))
    values()表示按照什么分组.  再搭配关键字匹配的内容是 c=count("id)
    查询每一个部门名称以及对应的员工的平均工资
    models.Emp.objects.values('dep').annotate(a=Avg('salary'))

    3.F查询和Q查询

    # 查询工资大于年龄的人
    from django.db.models import F, Q
    models.Emp.objects.filter(salary__gt=F('age'))
    #首先拿出所有的表记录, 然后每条表记录的 salary字段的数值 和 F("age")字段的数值作比较
    
    #F对象 F("age") 得到age字段的数值, 其目的是得到一个动态的数值, 之前的比较都是使用固定的常量,  __gt=   这个是基于双下划线的模糊查询
    
    Q 对象可以使用 & 、 | 和 ~(与 或 非)操作符组合起来。当一个操作符在两个Q 对象上使用时,它产生一个新的Q 对象。
    # 查询价格大于300或者不是2019年三月份的书籍
    models.Book.objects.filter(Q(price__gt=300)|~Q(Q(pub_date__year=2019)&Q(pub_date__month=3)))
  • 相关阅读:
    Eclipse 导入项目乱码问题(中文乱码)
    sql中视图视图的作用
    Java基础-super关键字与this关键字
    Android LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)的参数理解
    Android View和ViewGroup
    工厂方法模式(java 设计模式)
    设计模式(java) 单例模式 单例类
    eclipse乱码解决方法
    No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案
    【转】使用 Eclipse 调试 Java 程序的 10 个技巧
  • 原文地址:https://www.cnblogs.com/jalen-123/p/13193263.html
Copyright © 2020-2023  润新知