欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django框架中數(shù)據(jù)的連鎖查詢和限制返回?cái)?shù)據(jù)的方法

 更新時(shí)間:2015年07月17日 11:32:10   投稿:goldensun  
這篇文章主要介紹了Django框架中數(shù)據(jù)的連鎖查詢和限制返回?cái)?shù)據(jù)的方法,Django是Python重多高人氣框架中最為著名的一個(gè),需要的朋友可以參考下

連鎖查詢

通常我們需要同時(shí)進(jìn)行過濾和排序查詢的操作。 因此,你可以簡(jiǎn)單地寫成這種“鏈?zhǔn)健钡男问剑?/p>

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

你應(yīng)該沒猜錯(cuò),轉(zhuǎn)換成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ù)

另一個(gè)常用的需求就是取出固定數(shù)目的記錄。 想象一下你有成千上萬的出版商在你的數(shù)據(jù)庫(kù)里, 但是你只想顯示第一個(gè)。 你可以使用標(biāo)準(zhǔn)的Python列表裁剪語句:

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

這相當(dāng)于:

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]

這個(gè)例子返回兩個(gè)對(duì)象,等同于以下的SQL語句:

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

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

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

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

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


相關(guān)文章

最新評(píng)論