添加数据(两种方式):
# 第一种方式
herozhu = HeroInfo.objects.create(
hname = "某某某",
hgender = 0,
hdesc = 'houhouhou'
)
# 第二种方式
text = HeroInfo.objects.create(hname="某某某",hgender = 0,hdesc = 'houhouhou')
删除数据:
text = HeroInfo.objects.get(id = x)
text.delete()
修改数据(两种方式):
# 第一种方式
text = HeroInfo.objects.get(hname='某某某')
text.hname = '某某某呀'
text.save()
# 第二种方式
HeroInfo.objects.filter(hname='某某某').update(hname='某某某呀')
查询数据(基础):
基本查询
get 查询
# 查询id为1的数据
BookInfo.objecte.get(id=1)
all 查询
# 查询该表中所有数据
BookInfo.objecte.all()
count 查询
# 查询表中数据的总数量
BookInfo.objecte.count()
过滤查询
filter过滤 (filter和get的区别在get只能返回一个结果且在查询不到数据时会报错,而filter返回的是一个集合,可以同时返回多个数据,若搜索不到数据只会返回一个空集合而不会报错)
# 过滤id为1的数据
BookInfo.objecte.filter(id=1)
exclude过滤
# 查询除了id为1、3、5的数据
BookInfo.objecte.exclude(id= [1,3,5])
F和Q对象(导包:from django.models.db import F, Q)
F对象:对于属性与属性的对比
#查询readcount属性大于等于commentcount属性的书
BookInfo.objects.filter(readcount__gt=F('commentcount'))
Q对象:多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字
# Q对象可以使用&、| 连接 &表示逻辑与 |表示逻辑或 ~表示not
# 查询阅读量大于20的图书,只能用Q对象实现
BookInfo.objects.filter( Q(bread__gt=20) & Q(id__lt=3) )
# 但这种情况很少出现,多用以下方法
BookInfo.objects.filter(bread__gt=20,id__lt=3)
# 查询阅读量大于20,或编号小于3的Book,只能使用Q对象实现
BookInfo.objects.filter(Q(readcount__gt=20)|Q(id__lt=3))
# 查询id不等于3的数据
BookInfo.objects.filter(~Q(id=3))