(import keyword
print keyword.kwlist)
打印所有關鍵字
查詢集:
-
Person.objects.all()
-
Person.objects.all()[:10] 切片操作,獲取10個人,不支持負索引,切片可以節約內存
-
Person.objects.get(name=name)
-
Person.objects.filter(name="abc") # 等於Person.objects.filter(name__exact="abc") 名稱嚴格等於 "abc" 的人
-
Person.objects.filter(name__iexact="abc") # 名稱爲 abc 但是不區分大小寫,可以找到 ABC, Abc, aBC,這些都符合條件
-
Person.objects.filter(name__contains="abc") # 名稱中包含 "abc"的人
-
Person.objects.filter(name__icontains="abc") #名稱中包含 "abc",且abc不區分大小寫
-
Person.objects.filter(name__regex="^abc") # 正則表達式查詢
-
Person.objects.filter(name__iregex="^abc") # 正則表達式不區分大小寫
-
Person.objects.exclude(name__contains="WZ") # 排除包含 WZ 的Person對象
-
Person.objects.filter(name__contains="abc").exclude(age=23) # 找出名稱含有abc, 但是排除年齡是23歲的
創建集:
# 方法 1
Author.objects.create(name
=
"WeizhongTu"
, email
=
"[email protected]"
)
# 方法 2
twz
=
Author(name
=
"WeizhongTu"
, email
=
"[email protected]"
)
twz.save()
# 方法 3
twz
=
Author()
twz.name
=
"WeizhongTu"
twz.email
=
"[email protected]"
twz.save()
# 方法 4,首先嚐試獲取,不存在就創建,可以防止重複
Author.objects.get_or_create(name
=
"WeizhongTu"
, email
=
"[email protected]"
)
# 返回值(object, True/False)
刪除集:
Person.objects.
filter
(name__contains
=
"abc"
).delete()
# 刪除 名稱中包含 "abc"的人
如果寫成
people
=
Person.objects.
filter
(name__contains
=
"abc"
)
people.delete()
效果也是一樣的,Django實際只執行一條 SQL 語句。
更新集:
批量更新,適用於 .all() .filter() .exclude() 等後面 (危險操作,正式場合操作務必謹慎)
Person.objects.
filter
(name__contains
=
"abc"
).update(name
=
'xxx'
)
# 名稱中包含 "abc"的人 都改成 xxx
Person.objects.
all
().delete()
# 刪除所有 Person 記錄
單個 object 更新,適合於 .get(), get_or_create(), update_or_create() 等得到的 obj,和新建很類似。
twz
=
Author.objects.get(name
=
"WeizhongTu"
)
twz.name
=
"WeizhongTu"
twz.email
=
"[email protected]"
twz.save()
# 最後不要忘了保存!!!
排序集:
Author.objects.
all
().order_by(
'name'
)
Author.objects.
all
().order_by(
'-name'
)
# 在 column name 前加一個負號,可以實現倒序
重複問題:QuerySet 重複的問題,使用 .distinct() 去重
qs1
=
Pathway.objects.
filter
(label__name
=
'x'
)
qs2
=
Pathway.objects.
filter
(reaction__name
=
'A + B >> C'
)
qs3
=
Pathway.objects.
filter
(inputer__name
=
'WeizhongTu'
)
# 合併到一起
qs
=
qs1 | qs2 | qs3
這個時候就有可能出現重複的
# 去重方法
qs
=
qs.distinct()