增加:
方法一:
obj = Author()
obj.first_name = 'zhangsan'
obj.save()
方法二:
obj = Author(first_name='li')
obj.save()
方法三:
Author.objects.create(first_name='li')
方法四:
Author.objects.get_or_create(first_name='li') # 在插入相同的数据的时候,会进行不插入。
删除
整体思路,先找到相关的数据,然后进行相关的删除
方法一:
Author.objects.filter(first_name='li').delete()
方法二:
obj = Author.objects.get(id=5)
obj.delete()
修改:
方法一:
Author.objects.filter(first_name='zhang').update(last_name='sna')
方法二:
obj = Author.objects.get(id=3)
obj.first_name = 'zhang'
obj.save()
查询:
get() # 获取单条数据。没有找到就报错,找到多个就报错。
first() # 获取查询集(QuerySet)的第一个对象
last() # 最后一个对象
count() # 统计查询集中的所有对象个数
exists() # 查询查询集是否存在数据
all() # 查询所有的查询集
values() # 查询集是一个json的相关数据
print(person) # 直接打印相关的查询集,是一个对象的查询集
Author.objects.all().values('password') # 指定相关的属性名:只显示相关的属性的字典的查询集
Author.objects.all().values_list('password') # 返回指定属性的元组的集合。
部分重要查询:
Author.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值
查询出不包括相关的数字。
Author.objects.exclude(id__in=[11, 22, 33]) # not in
select * from Author where id not in (11,22,33)
Author.objects.filter(name__contains="ven") # contains(和数据库中like语法相同)
select * from Author where name like ‘%ven%’
Author.objects.filter(name__icontains="ven") # icontains大小写不敏感
Author.objects.filter(name__regex="^ven") # 正则匹配
Author.objects.filter(name__iregex="^ven") # 正则匹配,忽略大小写
Author.objects.filter(id__range=[1, 2]) # 范围bettwen and
Author.objects.filter(name='seven').order_by('id') # asc升序
Author.objects.filter(name='seven').order_by('-id') # desc降序
Author.objects.all()[10:20] # 切片,取所有数据的10条到20条,分页的时候用的到,下标从0开始,不能为负数, 可以实现分页
手动分页
page 页码
per_page 每页数量 =5
第1页(page=1):0-4
第2页(page=2): 5-9
第3页(page=3): 10-14
第4页(page=4): 15-19
...
每一页数据范围:
[(page-1)*per_page : page*per_page]
聚合
使用aggregate()函数返回聚合函数的值
Avg:平均值
Count:数量
Max:最大
Min:最小
Sum:求和
from django.db.models import Count, Min, Max, Sum
Author.objects.aggregate(Max('age'))
本文详细介绍了使用ORM(对象关系映射)进行数据库操作的方法,包括增加、删除、修改和查询的基本操作,以及如何利用过滤条件、聚合函数等高级功能进行数据处理。
1077

被折叠的 条评论
为什么被折叠?



