zoukankan      html  css  js  c++  java
  • django之数据库表的单表查询

    添加表记录

    对于单表有两种方式

    #添加数据的两种方式
    #方式一:实例化表的对象 就是一条记录
    student_obj = models.Student(name="zzp",course="python",birth="2019-9-19",grade=80)
    student_obj.save()
    
    #方式二
    models.Student.objects.create(name="zzp",course="python",birth="2019-9-19",grade=80)

    查询表记录

    查询相关API

    # 查询相关API
        # 1、all():查看所有
        student_obj = models.Student.objects.all()
        print(student_obj)  #打印的结果是QuerySet集合
        # 2、filter():可以实现且关系,但是或关系需要借助Q查询实现。。。
        #              查不到的时候不会报错
        print(models.Student.objects.filter(name="Frank"))  #查看名字是Frank的
        print(models.Student.objects.filter(name="Frank",fenshu=80))  #查看名字是Frank的并且分数是80的
        # 3、get():如果找不到就会报错,如果有多个值,也会报错,只能拿有一个值的
        print(models.Student.objects.get(name="Frank"))  #拿到的是model对象
        print(models.Student.objects.get(nid=2))  #拿到的是model对象
        # 4、exclude():排除条件
        print( models.Student.objects.exclude(name="海东")) #查看除了名字是海东的信息
        # 5、values():是QuerySet的一个方法 (吧对象转换成字典的形式了,)
        print(models.Student.objects.filter(name="海东").values("nid","course")) #查看名字为海东的编号和课程
        #打印结果:<QuerySet [{'nid': 2, 'course': 'python'}, {'nid': 24, 'course': 'python'}]>
        # 6、values_list():是queryset的一个方法 (吧对象转成元组的形式了)
        print(models.Student.objects.filter(name="海东").values_list("nid", "course"))
        #打印结果:< QuerySet[(2, 'python'), (24, 'python')] >
        # 7、order_by():排序
        print(models.Student.objects.all().order_by("fenshu"))
        # 8、reverse():倒序
        print(models.Student.objects.all().reverse())
        # 9、distinct():去重(只要结果里面有重复的)
        print(models.Student.objects.filter(course="python").values("fenshu").distinct())
        # 10、count():查看有几条记录
        print(models.Student.objects.filter(name="海东").count())
    
        # 11、first()
        # 12、last()
        return render(request,"test.html",{"student_obj":student_obj})
        # 13、esits:查看有没有记录,如果有返回True,没有返回False
            #         并不需要判断所有的数据,
            # if models.Book.objects.all().exists()

    基于双下划线的查询

    #大于  小于  大于等于  小于等于
    filter(price__gt='90')
    filter(price__lt = '90')
    filter(price__gte='90')
    filter(price__lte='90')
    
    #存在与某几个条件中
    filter(price__in=['11','22',''33])
    
    #在某个范围内
    filter(price__range=[50,90])
    
    #模糊查询
    filter(title__contains='西')  #查询标题有西这个字的
    filter(title__icontains='P')  # icontains对于大小写不敏感
    
    #以什么开头以什么结尾
    startswith,istartswith, endswith, isendswith 
    
    #按年查询 按月查询
    filter(create_time__year='2017')
    filter(create_time__month='9')

     修改表记录

    #先找出对象,然后通过对象点语法修改属性,后调用对象保存方法
    author_obj = Author.objects.get(id=5)
    author_obj.name = 'tenglan'
    author.save()
    
    #直接使用update()方法  QuerySet()对象的方法
    Publisher.objects.filter(id=2).update(name='American publisher')

    删除表记录

    删除方法就是delete().它运行时立即删除对象而不返回任何值。例如:e.delete()

    #使用 QuerySet()对象方法delete()删除  ,此删除是将QuerySet所有对象删除
    models.Student.objects.filter(nid=4).delete()
    
    #也可以找到其中一个对象,用对象点方法
    user_obj = models.User.objects.filter().first()
    user_obj.delete()
    万般皆下品,唯有读书高!
  • 相关阅读:
    6种负载均衡算法
    Java中volatile关键字
    剑指offer练习
    linux系统查看IP地址,不显示IP地址或者只显示127.0.0.1
    Nginx负载均衡配置
    集群应用Session一致性实现的三种方案
    rabbitMQ学习
    JDK1.8在LINUX下安装步骤
    ecplise部署gradle web项目
    Kubernetes下的应用监控解决方案
  • 原文地址:https://www.cnblogs.com/s686zhou/p/11553570.html
Copyright © 2011-2022 走看看