五、ORM语句——二
1、单表操作的其他事项(接上)1、 在创建表的那个类中,其拥有的objects里提供了各种管理数据表的方法,上一节也提到过objects中添加数据和查询数据等操作。注: 类中的__str__()方法,在类中重写此方法以后,如果再调用print()函数打印对象时,直接打印的是此函数的返回值。2、 单表查询常用的APIall():调用者objects管理器,返回querysetfilter...
·
1、单表操作的其他事项(接上)
1、 在创建表的那个类中,其拥有的objects里提供了各种管理数据表的方法,上一节也提到过objects中添加数据和查询数据等操作。
注: 类中的__str__()
方法,在类中重写此方法以后,如果再调用print()函数打印对象时,直接打印的是此函数的返回值。
2、 单表查询常用的API
- all():调用者objects管理器,返回queryset
- filter():调用者objects管理器,返回queryset
- get():调用者objects管理器,返回查询到model对象,(查询结果有且只有一个)
- first():调用者queryset,返回model对象
- exclude():调用者objects管理器,返回queryset
- order_by():排序 由queryset调用,返回值是queryset
- count():计数 由queryset调用,返回值是int
- reverse():由queryset调用,返回值是queryset
- exists():由queryset调用,返回值是bool值
- values():由queryset对象调用,返回值是queryset
- values_list():由queryset调用,返回值是queryset
- distinct():去重,由queryset调用,返回值是queryset
2、模糊查询
模糊查询异常情况的处理
如果在表中查询满足某个时间点的东西时,查询结果为空,则需要在setttings.py模块中将USE_TZ=True改为USE_TZ=False;
实例:
data = Book.objects.filter(pub_date__year=2018,pub_date__month=7) #若查询结果为空,则需要在setttings.py模块中将USE_TZ=True改为USE_TZ=False
print(data)
模糊查询
模糊查询的方式比较简单,最主要的符号就是__
;下面具体来看:
1、 字段名__gt=值
&字段名__lt=值
&字段名__gte=值
&字段名__lte=值
以上几个方法表示的意思分别为:
__gt
:表示大于,相当于SQL中的“>”__lt
:表示小于,相当于SQL中的“<”__gte
:表示大于等于,相当于SQL中的“>=”__lte
:表示小于等于,相当于SQL中的“<=”
实例:查看价格大于200的书籍
data = Book.objects.filter(price__gt=200) #查看价格大于200的书籍
data = Book.objects.filter(price__lte=200) #查看价格小于等于200的书籍
2、 字段名__startswith=值
这个表示以某个值开头的记录
实例:
data = Book.objects.filter(title__startswith='py').values('title')
这个表示查询以“py”开头的所有记录,并且只显示“title”字段(这个有values()函数确定)。
3、 字段名__contains=值
&字段名__in=值
&字段名__range=值
&字段名__icontains=值
字段名__contains=值
:查询指定字段中含有某个值的记录字段名__in=值
:相当于SQL中的in
关键字字段名__range=值
:查询字段的值在某个范围内的记录字段名__icontains=值
:和第一个一样,不同的是这个不区分大小写
实例:
#查询title属性中有“p”的书籍
data = Book.objects.filter(title__contains='p').values('title')
#查询价格是100,200或300的书籍
data = Book.objects.filter(price__in=[100,200,300])
#查询价格在100到200之间的书籍
data = Book.objects.filter(price__range=[100,200])
#查询title属性中包含"p"或"P"的书籍
data = Book.objects.filter(title__icontains='p')
#查询2018年12月份的所有书籍,返回值为queryset
data = Book.objects.filter(pub_date__year=2018,pub_date__month=7) #若查询结果为空,则需要在setttings.py模块中将USE_TZ=True改为USE_TZ=False
最后输出上面实例中每个data即可。
更多推荐
已为社区贡献2条内容
所有评论(0)