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 BeautifulSoup使用方法详解
Nov 21 Python
Python程序设计入门(1)基本语法简介
Jun 13 Python
django rest framework之请求与响应(详解)
Nov 06 Python
mac系统安装Python3初体验
Jan 02 Python
Python基础学习之时间转换函数用法详解
Jun 18 Python
django数据库自动重连的方法实例
Jul 21 Python
Python数学形态学实例分析
Sep 06 Python
python 读取.nii格式图像实例
Jul 01 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
python中字符串的编码与解码详析
Dec 03 Python
Python Selenium库的基本使用教程
Jan 04 Python
python实现按日期归档文件
Jan 30 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
php数据库抽象层 PDO
2011/05/07 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
javascript数组定义的几种方法
2017/10/06 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
Django卸载之后重新安装的方法
2017/03/15 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
Python如何定义接口和抽象类
2020/07/28 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
性能测试工程师的面试题
2015/02/20 面试题
商场经理竞聘演讲稿
2014/01/01 职场文书
小班重阳节活动方案
2014/02/08 职场文书
《永远的白衣战士》教学反思
2014/04/25 职场文书
代理人委托书
2014/09/16 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
锅炉工岗位职责
2015/02/13 职场文书
爱心募捐通知范文
2015/04/27 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
详解Python中下划线的5种含义
2021/07/15 Python