Django框架中數(shù)據(jù)的連鎖查詢和限制返回數(shù)據(jù)的方法
連鎖查詢
通常我們需要同時進行過濾和排序查詢的操作。 因此,你可以簡單地寫成這種“鏈式”的形式:
>>> 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;
限制返回的數(shù)據(jù)
另一個常用的需求就是取出固定數(shù)目的記錄。 想象一下你有成千上萬的出版商在你的數(shù)據(jù)庫里, 但是你只想顯示第一個。 你可以使用標準的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語法來取出數(shù)據(jù)的特定子集:
>>> 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() 語句來實現(xiàn):
>>> Publisher.objects.order_by('-name')[0]
相關文章
超詳細注釋之OpenCV實現(xiàn)視頻實時人臉模糊和人臉馬賽克
這篇文章主要介紹了OpenCV實現(xiàn)視頻實時人臉模糊和人臉馬賽克,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
基于Python批量鑲嵌拼接遙感影像/柵格數(shù)據(jù)(示例代碼)
這篇文章主要介紹了基于Python批量鑲嵌拼接遙感影像/柵格數(shù)據(jù),使用時直接修改Mosaic_GDAL函數(shù)的入?yún)⒕托辛?選擇數(shù)據(jù)存放的路徑會自動拼接,命名也會自己設置無需額外修改,需要的朋友可以參考下2023-10-10
Python實現(xiàn)PowerPoint演示文稿到圖片的批量轉換
PowerPoint演示文稿作為展示創(chuàng)意、分享知識和表達觀點的重要工具,被廣泛應用于教育、商務匯報及個人項目展示等領域,用Python代碼可以高效地實現(xiàn)PowerPoint演示文稿到圖片的批量轉換,從而提升工作效率,文本將介紹如何使用Python實現(xiàn)PowerPoint演示文稿到圖片的轉換2024-06-06

