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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
python自动化测试之setUp与tearDown实例
Sep 28 Python
零基础写python爬虫之HTTP异常处理
Nov 05 Python
python入门前的第一课 python怎样入门
Mar 06 Python
python安装numpy和pandas的方法步骤
May 27 Python
python基于SMTP协议发送邮件
May 31 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
Python写出新冠状病毒确诊人数地图的方法
Feb 12 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
python定义类的简单用法
Jul 24 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 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实现XSS安全过滤的方法
2015/07/29 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
Python打印斐波拉契数列实例
2015/07/07 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
pandas对指定列进行填充的方法
2018/04/11 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
用python写爬虫简单吗
2020/07/28 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
大学新闻系应届生求职信
2014/06/02 职场文书
日语专业求职信
2014/07/04 职场文书
2014年部门工作总结
2014/11/12 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
四群教育工作总结
2015/08/10 职场文书
高中优秀作文(范文)
2019/08/15 职场文书