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()