字段查詢
字段查詢是指如何指定sql where
子句的內容。
它們通過查詢集
方法filter()
、exclude()
和 get()
的關鍵字引數指定。
查詢的關鍵字引數的基本形式是field__lookuptype=value
。(中間是兩個下劃線)。
例如:
>>>翻譯成sql(大體)是:entry
.objects
.filter
(pub_date__lte
='2006-01-01'
)
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.開始了資訊的學習。雖然我小學也學過,但是看見班裡的一群大佬,還是忍不住在心裡吐槽 我小學到底學了什麼啊!嶽老師夏令營給我們上了一節課。然後正式開學後我們資訊課多了好多啊。我們小學的信奧就是做試卷 老師講。日子過得那是乙個煎熬啊。但是,上了初中...
開學啦,讀書啦,逃課啦
今天開學了,算是我的最後第二個學期了,現在的日子有點在掰著手指過日子的那種,當然日子還比較長,可能還要借助下腳一下,週末對於工作的人來說總是期待的,而我呢,總要鬱悶地對待這些週末,慢慢覺得有點週末恐懼症了。本來說好的今天去西溪濕地去看那邊的柿子,最終還是因為要繼續做些枯燥的活,不得不取消,真的有點可...