django 中QuerySet特性功能详解


Posted in Python onJuly 25, 2019

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
  """

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用xauth方式登录饭否网然后发消息
Apr 11 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
Jul 04 Python
详解python 发送邮件实例代码
Dec 22 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
python3实现字符串的全排列的方法(无重复字符)
Jul 07 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
python数值基础知识浅析
Nov 19 Python
flask框架url与重定向操作实例详解
Jan 25 Python
python爬虫用mongodb的理由
Jul 28 Python
Pandas的数据过滤实现
Jan 15 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
Python万能模板案例之matplotlib绘制甘特图
Apr 13 Python
对Python _取log的几种方式小结
Jul 25 #Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 #Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 #Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 #Python
Python 3.8 新功能全解
Jul 25 #Python
python3.7 的新特性详解
Jul 25 #Python
python issubclass 和 isinstance函数
Jul 25 #Python
You might like
需要注意的几个PHP漏洞小结
2012/02/05 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
js 处理URL实用技巧
2010/11/23 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
python简单猜数游戏实例
2015/07/09 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
详解Python_shutil模块
2019/03/15 Python
python编写简单端口扫描器
2019/09/04 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
linux面试题参考答案(5)
2014/09/01 面试题
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
单位租房协议书样本
2014/10/30 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis