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合用。这种叫做惰性执行,好处是只有需要数据时才去访问数据库,减少了资源消耗

  • 相关阅读:
    php编程 之php基础 表单
    javascript/ajax和php 进阶 之 项目实战
    php编程 之 php基础三
    Ajax基础1
    JavaScript编程基础2
    css3基础一
    html超文本标记语言基础一
    表连接、存储过程及基本编程
    五种函数、子查询及分页查询思路
    数据库与表的创建及增删改查
  • 原文地址:https://www.cnblogs.com/glz666/p/django_inquire.html
Copyright © 2011-2022 走看看