1.基本操作
1.1 添加
(1)save()
通过创建模型类对象,执行对象的save()方法保存到数据库中。
python">student = Student(name="测试",age=17,sex=True
)
student.save() # 保存
print(student.id) # 判断是否新增有ID
(2)create()
通过模型类.objects.create()保存,返回生成的模型类对象。
python">student = Student.object.create(name="测试",age=17,sex=True
)
print(student.id) # 判断是否新增有ID
1.2 查询
ORM中针对查询结果的限制,提供了一个查询集[QuerySet].这个QuerySet,是ORM中针对查询结果进行保存数据的一个类型,我们可以通过了解这个QuerySet进行使用,达到查询优化,或者限制查询结果数量的作用。
(1)all()
查询所有对象,返回queryset对象。
(2)filter()
筛选条件相匹配的对象,返回queryset对象。
(3)get()
返回与所给筛选条件相匹配的对象,返回结果有且只有一个, 如果符合筛选条件的对象超过一个或者没有都会抛出错误。
如果查询到多个结果,报错为:MultipleObjectsReturned
数据不存在,报错为:DoesNotExist
(4)first()、last()
first:查询查询集的第一条记录
last:查询查询集的最后一条记录
(5)exclude()
筛选条件不匹配的对象,返回queryset对象,和filter相反。
(6)order_by()
对查询结果排序
order_by("字段") # 按指定字段正序显示,相当于 asc 从小到大
order_by("-字段") # 按字段倒序排列,相当于 desc 从大到小
order_by("第一排序","第二排序",...)
(7)count()
查询集中对象的个数
python"># 查询所有男生的个数
count = Student.objects.filter(sex=1).count()
(8)exists()
判断查询集中是否有数据,如果有则返回True,没有则返回False
python"># 查询Student表中是否存在学生
print(Student.objects.exists())
(9)values()、values_list()
-
value()
把结果集中的模型对象转换成字典,并可以设置转换的字段列表,达到减少内存损耗,提高性能 -
values_list()
: 把结果集中的模型对象转换成列表,并可以设置转换的字段列表(元祖),达到减少内存损耗,提高性能
(10)distinct()
从返回结果中剔除重复纪录。返回queryset。
(11)F查询
模型对象中俩个属性如何进行比较
python">"""F对象:2个字段的值比较"""
# 获取从添加数据以后被改动过数据的学生
from django.db.models import F
# SQL: select * from db_student where created_time=updated_time;
student_list = Student.objects.exclude(created_time=F("updated_time"))
print(student_list)
(2)Q查询
多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字。
例:查询年龄大于20,并且编号小于30的学生。