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自动生成文章
Dec 25 Python
Linux下使用python调用top命令获得CPU利用率
Mar 10 Python
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
python读写csv文件实例代码
Jul 05 Python
Python实现元素等待代码实例
Nov 11 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
Python selenium爬取微博数据代码实例
May 22 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 Python
简单谈谈Python面向对象的相关知识
Jun 28 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
论坛头像随机变换代码
2006/10/09 PHP
PHP简介
2006/10/09 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
python unichr函数知识点总结
2020/12/16 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
Sony C++笔试题
2013/03/10 面试题
质检部岗位职责
2013/11/11 职场文书
20岁生日感言
2014/01/13 职场文书
学校就业推荐信范文
2014/05/19 职场文书
化工实习心得体会
2014/09/09 职场文书
财务整改报告范文
2014/11/05 职场文书
2014年工程部工作总结
2014/11/25 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript