一、增加数据:
1.使用 Entry.objects.create(属性=值,属性=值)
Entry:可以表示任意的实体类
返回值:将创建好的实体对象进行返回
2.创建Entry对象,并通过对象.save()进行保存
obj = Entry(属性=值,属性=值)
obj.属性=值
obj.save()
obj保存成功后,会被重新赋值
3.使用字典创建对象,并通过save()保存
dic = {
'属性':'值',
'属性':'值',
...
}
obj = Entry(**dic)
obj.save()
二、查询数据
通过 Entry.objects 属性调用查询结果
所有的查询接口的后面,都可以通过一个query属性来或得到对应的sql语句
1.基本的查询操作
语法:all()
用法:Entry.objects.all()
返回:QuerySet,由对象组成列表
2.查询返回指定列:
语法:values() | value('列1', '列2', ...)
用法:
Entry.objects.values()
Entry.objects.all().values()
返回值QuerySet,会将查询出来的部分列封装到字典中,再封装到列表中
3.查询返回指定列
语法:values_list('列1', '列2', ...)
用法同上
返回值:QuerySet,会将查询出来的部分列封装到元祖中,再封装到列表中
4.值查询一条数据
语法:get(条件)
作用:查询只能返回一条数据
用法:Entry.Objects.get('条件')
注意:
该方法只能返回一条数据
查询结果多于一条或没有查询结果的话都会抛出异常
5.根据条件查询部分行数据
语法:filter(条件)
用法: Entry.objects.filter()
返回值:QuerySet
Book.object.filter(id=1)[0]
Book.object.filter(id=1, publicate_date='2015-10-12') and
6.查询谓词
Entry.objects.filter(属性__谓词=值)
1.比较:
id__gt=4 id > 4
id__lte=4 id <=4
2.模糊查询:
name__contains='Lennon name LIKE '%Lennon%';
headline__startswith='Lennon' headline LIKE 'Lennon%'
headline__endswith='Lennon' headline LIKE '%Lennon'
3.包含
id__in=[1, 3, 4] id IN (1, 3, 4)
pub_date__range=(start_date, end_date) pub_date BETWEEN '2005-01-01' and '2005-03-31';
4.时间
data
quarter
year
Entry.objects.filter(pub_date__year__gte=2005)
time
hour
5.空
pub_date__isnull=True pub_date IS NULL;
7.做不等条件的查询筛选
语法:exclude(条件)
用法:Entry.objects.exclude()
返回值:QuerySet
8.排序查询
语法:order_by()
用法:Entry.objects.order_by('列', '-列')
默认是升序排序,如果想要降序则在列名前添加 - 即可
9.聚合查询 - 不带分组
语法:aggregate()
用法:Entry.objects.aggregate(名=聚合函数('列'))
返回值:字典组成的列表
聚合函数:
1.Avg()
2.Sum()
3.Count()
4.Min()
5.Max()
10.聚合查询 - 带分组
语法:annotate()
用法:Entry.objects.filter(条件1).values('分组列').annotate=(查询列名=聚合函数).
分组列名
filter(条件2).values('查询列')
要查询的字段
num = Book.objects.values('publicate_date').annotate(count=Count('id')).
values('publicate_date', 'count').all()
三、删除和修改
1.修改:
1.查
得到查询实体对象 QuerySet
2.改
通过对象的属性修改对象的值
3.保存
实体对象:调用 save()
QuerySet的update(属性=值,属性=值, ...)能够实现批量修改
QuerySet.update(...)
2.删除
1.删除单个单元
au = Author.objects.get(id=1)
au.delete()
2.批量删除对象
list = Author.objects.all()
list.delete()
isActive = True
3.F查询和Q查询
1.F查询:
Author表中所有人的年龄加10岁
update index_author set age= age + 10 where ...
1.作用:
在执行过程中获取某列的值
2.语法规范:
from django.db.models import F
Author.objects.all().update(age=F('age') + 10)
2.Q查询
1.作用:
在条件中充当或的实现方式(or)
2.语法规范
from django.db.models.import Q
Author.objects.filter(Q(条件1)|Q(条件2))