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()
万般皆下品,唯有读书高!