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()
万般皆下品,唯有读书高!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)