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中一些自然语言工具的使用的入门教程
Apr 13 Python
Python NumPy库安装使用笔记
May 18 Python
详解Python3中yield生成器的用法
Aug 20 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
TensorFlow saver指定变量的存取
Mar 10 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
Django2 连接MySQL及model测试实例分析
Dec 10 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
Python特殊属性property原理及使用方法解析
Oct 09 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 生成WML页面方法详解
2009/08/09 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
jquery选择器(常用选择器说明)
2010/09/28 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
判断网页编码的方法python版
2016/08/12 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
django删除表重建的实现方法
2019/08/28 Python
tensorflow 模型权重导出实例
2020/01/24 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
用 Python 制作地球仪的方法
2020/04/24 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
会计电算化应届生求职信
2013/11/03 职场文书
新年寄语大全
2014/04/12 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书