Django(ORM-基本操作)

本文介绍了Django ORM的基本操作,包括使用`create`和实例化对象的方式创建数据,使用Django shell进行交互式操作,以及查询、修改、更新和删除数据的方法。详细讲解了`all()`、`values()`、`values_list()`、`order_by()`、`filter()`、`exclude()`、`get()`等查询方法,以及如何进行批量操作和更新。同时,提到了查询谓词如`_exact`用于等值匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本草操作包括增删改查操作:核心-->模型类.管理器对象

创建数据:

Django ORM使用一种直观的方式把数据库中的数据表示成python对象

创建数据中每一条记录就是创建一个数据对象

方案1:MyModel.objects.create(属性1=值1,属性2=值1,...)

成功:返回创建好的实体对象

失败:抛出异常

方案2:创建MyModel实例对象,并调用save()进行保存

obj = MyModel(属性=值,属性=值)

obj.属性 = 值

obj.save()

在Django提供了一个交互式的操作项目叫Django Shell 它能够在交互模式用项目工程的代码执行相应的操作,利用Django shell可以代替编写view的代码进行直接操作

!注意:项目代码发生变化时,重新进入Django shell

启动方式:python manage.py shell

 数据库:

查询数据

数据库的查询需要使用管理器对象进行,通过MyModel.object管理器方法调用查询方法

 all()方法:

用法:MyModel.object.all()

作用:查询MyModel实体中所有的数据 等同于select*from table

返回值:QuerySet容器对象。内部存放MyModel实例

修改QuerySet的输出格式

 values(‘列1’,‘列2’...)

用法:MyModel.objects.values(...)

作用:查询部分列的数据并返回 等同于列1,列2 from xxx

返回值:QuerySet

        返回查询结果容器,容器内存字典,每个字典代表一条数据,格式为:{‘列1:值1’,‘列2‘:值2}

 values_list('列1','列2'...)

用法:MyModel.objects.values_list(...)

作用:返回元组形式的查询结果 等同于select列1,列2 from xxx

返回值:QuerySet容器对象,内部存放'元组'

会将查询出来的数据封装到元组中,再封装到查询集合QuerySet

 

 order_by()

用法:MyModel.objects.order_by(‘-列’,‘列’)

作用:与all()方法不同,他会用sql语句的order by子句对查询结果根据某个字段选择性进行排序

说明:默认是按照升序排序,降序需要增加‘-’表示

 练习:

 filter(条件)

语法:MyModel.objects.filter(属性1=值1,属性2=值2)

作用:返回包含此条件的全部数据集

返回值:QuerySet容器对象,内部存放MyModel实例

说明:当多个属性在一起时为‘与’关系

例子:查询title=‘数据库原理’的图书

exclude(条件) 

语法:MyModel.objects.exclude(条件)

作用:返回不包含此条件的全部数据集

例子:查询价格不是90以外的全部图书

get(条件)

语法:MyModel.objects.get(条件)

作用:返回满足条件的唯一一条数据

说明:该方法只能返回一条数据

        查询结果多余一条数据则抛出.Model.MultipleObjectsReturned异常

        查询结果如果没有数据则抛出Model.DoesNotExist异常

查询谓词

定义:做更灵活的条件查询时需要使用查询谓词

说明:每一个查询谓词是一个独立的查询功能

_exact:等值匹配

实例:

 

 

 更新操作:

修改单个实体的某些字段值的步骤

        1.查 --- 通过get()得到姚修改的实体对象

        2.改 ---通过对象.属性的方式修改数据

        3.保存 ---通过对象.save()保存数据

例子:

 

批量更新数据:

直接调用 QuerySet的update(属性=值)实现批量修改

删除操作:

单个删除 

批量删除:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值