(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
=
"tuweizhong@163.com"
)
# 方法 2
twz
=
Author(name
=
"WeizhongTu"
, email
=
"tuweizhong@163.com"
)
twz.save()
# 方法 3
twz
=
Author()
twz.name
=
"WeizhongTu"
twz.email
=
"tuweizhong@163.com"
twz.save()
# 方法 4,首先尝试获取,不存在就创建,可以防止重复
Author.objects.get_or_create(name
=
"WeizhongTu"
, email
=
"tuweizhong@163.com"
)
# 返回值(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
=
"tuweizhong@163.com"
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()