django 中QuerySet特性功能详解
作者:谷子的 时间:2021-09-29 17:48:14
Book表的数据显示
id title price publish_id
2 Linux 30 1
3 项塔兰 45 2
4 追风筝的人 39.9 3
5 富爸爸 23 10
创建queryset 视图 函数, 可以使用的列表的方法,按索引,切片的方法取值,得到一个列表对象
def queryset(request):
ret1 = Book.objects.all()[0]#QuerySet支持索引,切片操作
# print(ret1) #linux 得到一个具体的对象
ret2 = Book.objects.all()[1:3]
# print(ret2)#<QuerySet [<Book: 项塔兰>, <Book: 追风筝的人>]>
# ret3 = Book.objects.all()[:2]
ret4 = Book.objects.all()[::2]# 按步长取,隔一个取一个,,,[::1}挨着取,一个个都取
# print(ret3)#<QuerySet [<Book: Linux>, <Book: 项塔兰>]>
print(ret4)#[<Book: Linux>, <Book: 追风筝的人>]
-----
可迭代特性, iterator() ,exists()
主要是QuerySet的缓存机制,如果一次从数据库取出很多数据,就有可能导致程序崩溃,可以利用iterator()方法,做性能优化,
为了判断获取到的对象是否有值,没有必要遍历所有的对象,用exists()方法()
#可迭代特性
book_list = Book.objects.all() #取出数据库的所有对象,要考虑cache机制,如果数据量太大,程序就会崩溃
#判断book_list 是否有值,假如有很多数据,就没有必要全部查一遍才得知有数据,只要查到有1条数据,就可以知道book_list有数据,就用exists()方法
if book_list.exists():
print('ok') #ok ,说明数据库有值
#利用itertor()方法 book_list1 = Book.objects.all().iterator() #这次就不能用2次for循环,第一次for循环,就已经把遍历完了,
book_list1 = Book.objects.all().iterator() #这次就不能用2次for循环,第一次for循环,就已经把遍历完了,用next()方法每次取出一个值,
print(next(book_list1)) #linux
print(next(book_list1))#项塔兰
print(next(book_list1))#追风筝的人
Book.objects.filter(id=2).update(price=100.00)#对数据库数据进行更新,但并没有执行,只有在用到的时候在执行
for obj in book_list: # 在for循环时开始执行sql语句查询
print(obj.title,obj.price)
#如果for循环2次,打印2次结果,也是执行一次sql语句,因为存在sql的缓存机制,把第一次查询的结果放到缓存里,
#下次从缓存里调
"""
Linux 30.00 ---没有更新数据之前
项塔兰 45.00
追风筝的人 39.90
富爸爸 23.00
"""
"""
Linux 100.00 ----更新数据之后
项塔兰 45.00
追风筝的人 39.90
富爸爸 23.00
"""
来源:https://www.cnblogs.com/gyh04541/p/7920660.html
标签:django,queryset,特性
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2023-09-18 23:32:01
![](https://img.aspxhome.com/file/2023/5/62895_0s.png)
Tensorflow 多线程设置方式
2021-09-29 21:53:50
python高级语法之闭包和装饰器详解
2021-09-19 18:28:55
SQL重复记录处理(查找,过滤,删除)
2008-11-17 20:47:00
Python内置方法和属性应用:反射和单例(推荐)
2022-08-04 03:23:48
二级域名原理以及asp实现程序
2007-08-03 13:08:00
使用Python解决常见格式图像读取nii,dicom,mhd
2021-11-14 23:36:59
ThinkPHP3.1.3版本新特性概述
2023-09-28 15:25:11
python如何让类支持比较运算
2022-07-07 13:02:52
Flask之flask-script模块使用
2022-02-18 11:01:13
asp从Excel中筛选符合条件的记录保存至新的Excel中
2007-09-06 19:20:00
Python标准库之随机数 (math包、random包)介绍
2021-09-26 11:57:08
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2023-09-07 22:44:41
![](https://img.aspxhome.com/file/2023/0/555401_0s.png)
列表模块是否需要标题
2009-06-25 14:11:00
![](https://img.aspxhome.com/file/UploadPic/20096/25/g2009620101624-60s.jpg)
详解Python装饰器
2023-11-12 12:40:06
如何使用Python的OpenCV库处理图像和视频
2022-09-06 10:22:12
![](https://img.aspxhome.com/file/2023/9/90349_0s.png)
Mootools常用方法扩展(五)
2009-03-03 12:12:00
利用Python抢回在蚂蚁森林逝去的能量(实现代码)
2022-07-01 15:15:39
![](https://img.aspxhome.com/file/2023/6/90646_0s.jpg)
python根据京东商品url获取产品价格
2022-01-26 12:14:31
Dreamweaver使用技巧之如何巧用DW4文件库更新网站
2010-10-20 20:07:00
![](https://img.aspxhome.com/file/UploadPic/20072/20072311301764s.gif)