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

 更新时间:2015年07月17日 11:32:10   投稿:goldensun  
这篇文章主要介绍了Django框架中数据的连锁查询和限制返回数据的方法,Django是Python重多高人气框架中最为著名的一个,需要的朋友可以参考下

连锁查询

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

>>> 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]


相关文章

  • 教你如何利用python3爬虫爬取漫画岛-非人哉漫画

    教你如何利用python3爬虫爬取漫画岛-非人哉漫画

    本文给大家分享利用python3爬虫爬取漫画岛-非人哉漫画,本文通过实例代码给大家介绍的非常详细,需要的朋友跟随小编一起学习下吧
    2021-07-07
  • 详解Python脚本如何设置试用期

    详解Python脚本如何设置试用期

    程序员可能会私下给别人开发一些工具,但是通常要给别人试用一下,但是万一别人试用后,把你拉黑,那就白忙活了。今天就分享如何在 Python 里设置有效期
    2022-07-07
  • python 2.7 检测一个网页是否能正常访问的方法

    python 2.7 检测一个网页是否能正常访问的方法

    今天小编就为大家分享一篇python 2.7 检测一个网页是否能正常访问的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 解决Python print输出不换行没空格的问题

    解决Python print输出不换行没空格的问题

    今天小编就为大家分享一篇解决Python print输出不换行没空格的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python实现计算AUC的示例代码

    Python实现计算AUC的示例代码

    AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积。本文将利用Python语言实现计算AUC,感兴趣的可以学习一下
    2022-07-07
  • Python Pyramid框架应用场景及高级特性实战

    Python Pyramid框架应用场景及高级特性实战

    Pyramid是一个灵活且强大的Python web框架,广泛用于构建各种规模的Web应用程序,本文将深度探索Pyramid框架,介绍其核心概念、应用场景以及一些高级特性
    2023-12-12
  • Pycharm更换python解释器的方法

    Pycharm更换python解释器的方法

    今天小编就为大家分享一篇Pycharm更换python解释器的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python,Java,JavaScript实现indexOf

    python,Java,JavaScript实现indexOf

    这篇文章主要介绍了python,Java,JavaScript如何实现indexOf,帮助大家更好的理解indexOf,感兴趣的朋友可以了解下
    2020-09-09
  • python实现AES算法及AES-CFB8加解密源码

    python实现AES算法及AES-CFB8加解密源码

    这篇文章主要为大家介绍了python实现AES算法及AES-CFB8加解密的源码示例,有需要朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • Python安装官方whl包和tar.gz包的方法(推荐)

    Python安装官方whl包和tar.gz包的方法(推荐)

    下面小编就为大家带来一篇Python安装官方whl包和tar.gz包的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06

最新评论