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对小数进行除法运算的正确方法示例
Aug 25 Python
Python中实现常量(Const)功能
Jan 28 Python
Python内置函数dir详解
Apr 14 Python
详解Python编程中time模块的使用
Nov 20 Python
浅谈Python 对象内存占用
Jul 15 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
利用Python将每日一句定时推送至微信的实现方法
Aug 13 Python
Python测试模块doctest使用解析
Aug 10 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
总结Python使用过程中的bug
Jun 18 Python
python 网络编程要点总结
Jun 18 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
Feb 12 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
深入php内核之php in array
2015/11/10 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
2010/06/07 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
js实现分页功能
2017/05/24 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
餐饮业会计岗位职责
2013/12/19 职场文书
初中英语教学反思
2014/01/25 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
建筑管理专业求职信
2014/07/28 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers