国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django框架中數據的連鎖查詢和限制返回數據的方法

2020-01-04 18:03:06
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Django框架中數據的連鎖查詢和限制返回數據的方法,Django是Python重多高人氣框架中最為著名的一個,需要的朋友可以參考下

連鎖查詢

通常我們需要同時進行過濾和排序查詢的操作。 因此,你可以簡單地寫成這種“鏈式”的形式:

 

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

你應該沒猜錯,轉換成SQL查詢就是 WHERE 和 ORDER BY 的組合:

 

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

限制返回的數據

另一個常用的需求就是取出固定數目的記錄。 想象一下你有成千上萬的出版商在你的數據庫里, 但是你只想顯示第一個。 你可以使用標準的Python列表裁剪語句:

 

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

這相當于:

 

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

類似的,你可以用Python的range-slicing語法來取出數據的特定子集:

 

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

這個例子返回兩個對象,等同于以下的SQL語句:

 

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

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

 

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

雖然不支持負索引,但是我們可以使用其他的方法。 比如,稍微修改 order_by() 語句來實現:

 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临西县| 济南市| 花莲市| 邯郸县| 得荣县| 保德县| 义乌市| 观塘区| 鹰潭市| 贡觉县| 桃源县| 时尚| 迁安市| 阜新| 陈巴尔虎旗| 张家界市| 台山市| 金堂县| 福贡县| 宜良县| 阿克陶县| 芮城县| 平遥县| 鄂托克前旗| 留坝县| 库尔勒市| 温宿县| 琼结县| 德化县| 漠河县| 清涧县| 乌兰察布市| 南和县| 盱眙县| 安仁县| 淮滨县| 浦江县| 汪清县| 昂仁县| 绥滨县| 遂宁市|