基本草操作包括增删改查操作:核心-->模型类.管理器对象
创建数据:
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(属性=值)实现批量修改
删除操作:
单个删除
批量删除: