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运算符重载用法实例分析
Jun 01 Python
python多线程方式执行多个bat代码
Jun 07 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 Python
Python实现的爬虫功能代码
Jun 24 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
Dec 23 Python
Python连接字符串过程详解
Jan 06 Python
为什么是 Python -m
Jun 19 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
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
laravel安装和配置教程
2014/10/29 PHP
PHP的几个常用加密函数
2016/02/03 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
Javascript 强制类型转换函数
2009/05/17 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python多线程方式执行多个bat代码
2016/06/07 Python
深入理解python对json的操作总结
2017/01/05 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
python实现教务管理系统
2018/03/12 Python
python实现电脑自动关机
2018/06/20 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
四年的大学生生活自我评价
2013/12/09 职场文书
一年级班主任感言
2014/03/08 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
党员承诺书范文
2014/05/19 职场文书
React如何创建组件
2021/06/27 Javascript
关于python类SortedList详解
2021/09/04 Python
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
Golang获取List列表元素的四种方式
2022/04/20 Golang
Golang bufio详细讲解
2022/04/21 Golang
利用Apache Common将java对象池化的问题
2022/06/16 Servers