Django框架中数据的连锁查询和限制返回数据的方法


Posted in Python onJuly 17, 2015

连锁查询

通常我们需要同时进行过滤和排序查询的操作。 因此,你可以简单地写成这种“链式”的形式:

>>> Publisher.objects.filter(country="U.S.A.").order_by("-name")
[<Publisher: O'Reilly>, <Publisher: Apress>]

你应该没猜错,转换成SQL查询就是 WHERE 和 ORDER BY 的组合:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE country = 'U.S.A'
ORDER BY name DESC;

限制返回的数据

另一个常用的需求就是取出固定数目的记录。 想象一下你有成千上万的出版商在你的数据库里, 但是你只想显示第一个。 你可以使用标准的Python列表裁剪语句:

>>> Publisher.objects.order_by('name')[0]
<Publisher: Apress>

这相当于:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
ORDER BY name
LIMIT 1;

类似的,你可以用Python的range-slicing语法来取出数据的特定子集:

>>> Publisher.objects.order_by('name')[0:2]

这个例子返回两个对象,等同于以下的SQL语句:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
ORDER BY name
OFFSET 0 LIMIT 2;

注意,不支持Python的负索引(negative slicing):

>>> Publisher.objects.order_by('name')[-1]
Traceback (most recent call last):
 ...
AssertionError: Negative indexing is not supported.

虽然不支持负索引,但是我们可以使用其他的方法。 比如,稍微修改 order_by() 语句来实现:

>>> Publisher.objects.order_by('-name')[0]

Python 相关文章推荐
Python设计模式之单例模式实例
Apr 26 Python
python实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
Python中多线程及程序锁浅析
Jan 21 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
Python用threading实现多线程详解
Feb 03 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
python多线程实现TCP服务端
Sep 03 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
python数据预处理方式 :数据降维
Feb 24 Python
基于Python的OCR实现示例
Apr 03 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
Python绘图实现台风路径可视化代码实例
Oct 23 Python
Django中对数据查询结果进行排序的方法
Jul 17 #Python
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 #Python
Python的Django框架中的数据过滤功能
Jul 17 #Python
在Python的Django框架中更新数据库数据的方法
Jul 17 #Python
在Django框架中运行Python应用全攻略
Jul 17 #Python
Python的Django框架中的数据库配置指南
Jul 17 #Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 #Python
You might like
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
PHP生成RSS文件类实例
2014/12/05 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
基于jquery 的一个progressbar widge
2010/10/29 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
js数组去重的hash方法
2016/12/22 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
appium+python adb常用命令分享
2020/03/06 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
小学门卫岗位职责
2013/12/17 职场文书
三好生演讲稿
2014/09/12 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
合作协议书模板2014
2014/09/26 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
靠谱准确的求职信
2019/04/02 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
react国际化react-intl的使用
2021/05/06 Javascript
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL