Django ORM使用

1.基本操作

1.1 添加

(1)save()

通过创建模型类对象,执行对象的save()方法保存到数据库中。

student = Student(
    name="测试",
    age=17,
    sex=True
)
student.save() # 保存
print(student.id) # 判断是否新增有ID

(2)create()

通过模型类.objects.create()保存,返回生成的模型类对象。

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()

查询集中对象的个数

# 查询所有男生的个数
count = Student.objects.filter(sex=1).count()

(8)exists()

判断查询集中是否有数据,如果有则返回True,没有则返回False

# 查询Student表中是否存在学生
print(Student.objects.exists())

(9)values()、values_list()

  • value()把结果集中的模型对象转换成字典,并可以设置转换的字段列表,达到减少内存损耗,提高性能

  • values_list(): 把结果集中的模型对象转换成列表,并可以设置转换的字段列表(元祖),达到减少内存损耗,提高性能

(10)distinct()

从返回结果中剔除重复纪录。返回queryset。

(11)F查询

模型对象中俩个属性如何进行比较

"""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的学生。


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值