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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
python中使用smtplib和email模块发送邮件实例
Apr 22 Python
Python中的引用和拷贝浅析
Nov 22 Python
Python中基本的日期时间处理的学习教程
Oct 16 Python
Python数据类型详解(四)字典:dict
May 12 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
wxPython实现整点报时
Nov 18 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 Python
python 制作网站小说下载器
Feb 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
php读取文件内容的几种方法详解
2013/06/26 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
js常用代码段整理
2011/11/30 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
python模块之re正则表达式详解
2017/02/03 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
Django 拆分model和view的实现方法
2019/08/16 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
python如何进入交互模式
2020/07/06 Python
python多线程和多进程关系详解
2020/12/14 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
Java文件和目录(IO)操作
2014/08/26 面试题
老干部工作先进事迹
2014/08/17 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
大学生村官入党自传
2015/06/26 职场文书
文明礼貌主题班会
2015/08/14 职场文书
 Python 中 logging 模块使用详情
2022/03/03 Python
python实现会员管理系统
2022/03/18 Python