啦啦啦啦 Django1 96 字段查詢

2021-07-11 20:47:15 字數 2217 閱讀 2743

字段查詢

字段查詢是指如何指定sql where

子句的內容。

它們通過查詢集

方法filter()

、exclude()

和 get()

的關鍵字引數指定。

查詢的關鍵字引數的基本形式是field__lookuptype=value

。(中間是兩個下劃線)。

例如:

>>> 

entry

.objects

.filter

(pub_date__lte

='2006-01-01'

)

翻譯成sql(大體)是:

select

*from

blog_entry

where

pub_date

<=

'2006-01-01'

;

查詢條件中指定的字段必須是模型欄位的名稱。

但有乙個例外,對於foreignkey

你可以使用欄位名加上_id

字尾

在這種情況下,該引數的值應該是外來鍵的原始值。

例如:

>>> 

entry

.objects

.filter

(blog_id=4

)

如果你傳遞的是乙個不合法的引數,查詢函式將引發 typeerror。

這些資料庫api 支援大約二十多種查詢的型別

下面是一些你可能用到的常見查詢:

exact:

「精確」匹配。

例如:

>>> 

entry

.objects

.get

(headline__exact

="man bites dog"

)

將生成下面的sql:

select

...where

headline

='man bites dog'

;

如果你沒有提供查詢型別 —— 即如果你的關鍵字引數不包含雙下劃線

—— 預設假定查詢型別是exact

例如,下面的兩條語句相等:

>>> 

blog

.objects

.get

(id__exact=14

)# explicit form

>>>

blog

.objects

.get(id

=14)# __exact is implied

這是為了方便,因為exact

查詢是最常見的情況。

iexact:

大小寫不敏感的匹配。

所以,查詢:

>>> 

blog

.objects

.get

(name__iexact

="beatles blog"

)

將匹配標題為"beatles

blog"

、"beatles

blog"

甚至"beatles

blog"

的blog。

contains:

大小寫敏感的包含關係測試。

例如:

entry

.objects

.get

(headline__contains

='lennon'

)

大體可以翻譯成下面的sql:

select

...where

headline

like

'%lennon%'

;

注意,這將匹配'today

lennon

honored'

但不能匹配'today

lennon

honored'。

還有乙個大小寫不敏感的版本,icontains。

startswith

,  endswith

分別表示以***開頭和以***結尾。

當然還有大小寫不敏感的版本,叫做istartswith

和 iendswith。

今天學習醃菜,啦啦啦啦啦

學完pickle模組以後發現,python的函式和醃菜都可以使 精簡,作用很大,用好了受益終生,儲存用pickle.dump函式,讀取用pickle.load函式,可以將元組,列表,字典等以二進位制形式儲存進乙個檔案中做成乙個資料報,然後在不同的程式設計任務中就可以任意呼叫了,真的很方便。用法如下 ...

啦啦啦,2017總結

我們從小學到初中,從小學生變為初中生。然後一起進了703.開始了資訊的學習。雖然我小學也學過,但是看見班裡的一群大佬,還是忍不住在心裡吐槽 我小學到底學了什麼啊!嶽老師夏令營給我們上了一節課。然後正式開學後我們資訊課多了好多啊。我們小學的信奧就是做試卷 老師講。日子過得那是乙個煎熬啊。但是,上了初中...

開學啦,讀書啦,逃課啦

今天開學了,算是我的最後第二個學期了,現在的日子有點在掰著手指過日子的那種,當然日子還比較長,可能還要借助下腳一下,週末對於工作的人來說總是期待的,而我呢,總要鬱悶地對待這些週末,慢慢覺得有點週末恐懼症了。本來說好的今天去西溪濕地去看那邊的柿子,最終還是因為要繼續做些枯燥的活,不得不取消,真的有點可...