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 相关文章推荐
python3图片转换二进制存入mysql
Dec 06 Python
Python解析nginx日志文件
May 11 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 Python
python快速排序的实现及运行时间比较
Nov 22 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 Python
Django多数据库配置及逆向生成model教程
Mar 28 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
一文详述 Python 中的 property 语法
Sep 01 Python
python 利用 PIL 将数组值转成图片的实现
Apr 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
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
python关闭windows进程的方法
2015/04/18 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
django框架cookie和session用法实例详解
2019/12/10 Python
详解Python 函数参数的拆解
2020/09/02 Python
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
医药代表个人求职信范本
2013/12/19 职场文书
文秘人员工作职责
2014/01/31 职场文书
高一学生评语大全
2014/04/25 职场文书
高三学生评语大全
2014/04/25 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
高中化学教学反思
2016/02/22 职场文书