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之传说中的函数编写条规
Oct 11 Python
Python Sleep休眠函数使用简单实例
Feb 02 Python
使用Python构建Hopfield网络的教程
Apr 14 Python
Django 生成登陆验证码代码分享
Dec 12 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
Python 中Django安装和使用教程详解
Jul 03 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
python将图片转base64,实现前端显示
Jan 09 Python
python圣诞树编写实例详解
Feb 13 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
python爬虫框架feapde的使用简介
Apr 20 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
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
关于document.cookie的使用javascript
2008/04/11 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
python实现进程间通信简单实例
2014/07/23 Python
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
python图片验证码生成代码
2016/07/02 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
用python计算文件的MD5值
2020/12/23 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
北京华建集团SQL面试题
2014/06/03 面试题
销售人员中英文自荐信
2013/09/22 职场文书
大学生求职简历的自我评价范文
2013/10/12 职场文书
小学教育毕业生自荐信
2013/11/18 职场文书
教师业务学习制度
2014/01/25 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
运动会广播稿20字
2014/02/18 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
暖春观后感
2015/06/08 职场文书
谢师宴学生致辞
2015/07/27 职场文书