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

首頁 > 編程 > Python > 正文

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

2019-11-25 17:10:30
字體:
供稿:網(wǎng)友

連鎖查詢

通常我們需要同時(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, websiteFROM books_publisherWHERE country = 'U.S.A'ORDER BY name DESC;

限制返回的數(shù)據(jù)

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

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

這相當(dāng)于:

SELECT id, name, address, city, state_province, country, websiteFROM books_publisherORDER BY nameLIMIT 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, websiteFROM books_publisherORDER BY nameOFFSET 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]


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 牙克石市| 吐鲁番市| 全州县| 耒阳市| 永春县| 长岭县| 余庆县| 利津县| 增城市| 乌兰县| 迁安市| 临湘市| 荆门市| 于都县| 淮安市| 天水市| 珲春市| 阜康市| 张掖市| 唐河县| 苏州市| 乌拉特前旗| 广饶县| 桃源县| 眉山市| 汉中市| 镶黄旗| 开鲁县| 彰化县| 石景山区| 万安县| 弋阳县| 伊金霍洛旗| 利川市| 阜阳市| 尼勒克县| 聂拉木县| 大港区| 繁峙县| 炉霍县| 钦州市|