zoukankan      html  css  js  c++  java
  • django模型查询

    from django.shortcuts import render
    from django.http import HttpResponse, Http404
    from django.urls import reverse
    from . import models
    from django.db.models import Q
    
    def inquire(request):
        # 查询所有的数据,返回一个数据集合对象(查询集)
        all_data = models.Stu.objects.all()
        print(all_data, all_data[0].stu_name)
    
        # 过滤查询,按条件筛选数据
        filter_data = models.Stu.objects.filter(id='10')
        print(filter_data, filter_data[0].stu_name, filter_data.values())
        all_filter_data = models.Stu.objects.all().filter(id='10')
        print(all_filter_data, all_filter_data[0].stu_name)
    
        # 排除查询,排除符合条件的数据
        exclude_data = models.Stu.objects.exclude(id='10')
        print(exclude_data, exclude_data[0].stu_name)
    
        # 按指定字段进行排序,带负号代表降序
        order_data = models.Stu.objects.all().order_by('-id').values('id')
        print(order_data)
    
        # 将查询集对象序列化为字典类型
        value_data = models.Stu.objects.all().values()
        print(value_data)
    
        # # 返回单个满足条件的对象, 未查到数据或查到多跳数据都会报错,用于主键查询
        get_data = models.Stu.objects.all().get(id='13')
        print(get_data, get_data.stu_phone)
    
        # # 返回当前查询的总条数
        count_data = models.Stu.objects.all().count()
        print(count_data)
    
        # # 返回第一个对象
        first_data = models.Stu.objects.all().first()
        # print(first_data)
    
        # # 返回最后一个对象
        # last_data = models.Stu.objects.all().last()
        # print(last_data)
    
        # # 判断查询集中是否有数据,有则返回True
        # exists_data = models.Stu.objects.all().exists()
        # print(exists_data)
    
        # 比较运算符
        # 判等运算,大小写敏感
        # exact_data = models.Stu.objects.all().filter(stu_name__exact='jacks')
        # print(exact_data)
    
        # 包含运算,大小写敏感
        # contains_data = models.Stu.objects.all().filter(stu_name__contains='ack')
        # print(contains_data)
    
        # # startswith 以指定值开头
        startswith_data = models.Stu.objects.all().filter(stu_name__startswith='jac')
        print(startswith_data)
    
        # # endswith 以指定值结尾
        endswith_data = models.Stu.objects.all().filter(stu_name__endswith='s')
        print(endswith_data)
    
        # isnull 是否为null
        snull_data = models.Stu.objects.all().filter(stu_name__isnull=False)
        print(isnull_data)
        # isnotnull 判断是否不为null
    
        # in 查询包含在指定范围的
        in_data = models.Stu.objects.all().filter(id__in=[3, 7, 10, 13])
        print(in_data.values('id'))
    
        #gt、gte、lt、lte 大于、大于等于、小于、小于等于
        gt_data = models.Stu.objects.all().filter(id__gt=10)
        print(gt_data.values('id'))
    
        #year month day week_day hour minute second 时间类型运算符
        year_data = models.Stu.objects.all().filter(add_time__year='2020')
        print(year_data)
        date_data = models.Stu.objects.all().filter(add_time__year__gt='2019')
        print(date_data.values('add_time'))
    
        # 使用Q对象进行复杂查询
        Q_data = models.Stu.objects.all().filter(Q(id__gt=12)|Q(add_time__day='26'))
        print(Q_data.values('id', 'add_time'))
    
        return HttpResponse('查询数据')

    特别注意:创建查询集不会带来任何数据库的访问,直到调用数据才会访问数据库,如迭代 序列化 与if合用。这种叫做惰性执行,好处是只有需要数据时才去访问数据库,减少了资源消耗

  • 相关阅读:
    python3中模块初识
    Django 应用程序 + 模型 + 基本数据访问
    Axure文本框验证和外部url的调用
    MATLAB 实时脚本(live-script)使用
    Django MTV 开发模式 + 数据库配置
    Django 模板继承
    Django 修改视图文件(views.py)并加载Django模块 + 利用render_to_response()简化加载模块 +locals()
    Django Context对象 + 过滤器 + 标签
    Axure 页面内多组内容切换的实现 + 利用一个内联框架实现百度地图访问
    MATLAB绘图功能(2) 二维底层绘图修饰
  • 原文地址:https://www.cnblogs.com/glz666/p/django_inquire.html
Copyright © 2011-2022 走看看