Django ORM 操作
Posted 不归路~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ORM 操作相关的知识,希望对你有一定的参考价值。
ORM 基本操作-创建数据
-
ORM 基本操作包含了增删改查,CRUD操作
-
CRUD是指计算机处理时的增加(create)读取(read)更新(update)和删除(delete)
-
ORM CURD核心 - > 模型类.管理器对象
-
每个继承自models.Model的模型类,都会有一个object对象别同样继承下来,这个对象叫管理器对象,数据库的增删改查可以通过模型类的管理器实现
-
Class MyModel(models.model): ... MyModel.objects.create(...) # objects 就是管理器对象
-
-
Django ORM使用一种只管的方式把数据表中的数据表示成python对象
-
创建数据中每一条记录就是创建要给数据对象
-
方案1
- MyModel.objects.create(属性1=值1,属性2=值2,...)
- 成功:返回创建好的实体对象
- 失败:抛出异常
- MyModel.objects.create(属性1=值1,属性2=值2,...)
-
方案2
-
创建MyModel实例对象,并调用save()进行保存
obj = MyModel(属性=值...) obj.属性=值 # 执行save()时才插入数据库 obj.save()
-
ORM 基本操作 - 查询
-
数据库的查询需要使用管理器对象进行
-
通过MyModel.objects管理器方法调用查询方法
-
all() 查询全部记录,返回querySet查询对象
-
用法: MyModel.object.all()
-
等同于selet * from table
-
返回QuerySet容器对象,内部存放MyModel实例
-
from bookstore.models import Book books = Book.objects.all() for book in books: print(\'书名\',book.title) # 可以在模型类中定义__str__方法,自定义QuerySet中的输出格式 def __str__(self): return "书名:%s" %(self.title)
-
-
values(\'列名1\',\'列明2\',,,)
- MyModel.object.values(...) 查询部分列的数据并返回QuerySet 字典形式
- 等同于 select \'列名1\',\'列明2\', from tableName
-
values_list(\'列名1\',\'列明2\',..)
-
MyModel.object.values_list(...) 查询部分列的数据并返回QuerySet 元组形式
- 等同于 select \'列名1\',\'列明2\', from tableName
-
order_by() 相当于.all().order_by()后排序
- MyModel.objects.order_by("-列","列")
- -列 表示降序,默认 为升序
-
get(条件) 查找符合条件的单一记录
- MyModel.objects.get(条件)
- 返回满足条件的唯 一 一 条数据,若多或无都回抛出异常
- 该方法只能返回一条数据
-
filter(条件) 查找符合条件的多条记录
- MyModel.objects.filter(属性1=值1,属性2=值2)
- 返回包含此条件的全部数据集,多个条件之间的关系为 与 ·and·
- 返回一个QuerySet容器对象
-
exclude(条件) 查找符合条件之外的全部记录
- MyModel.objects.exclude(条件)
- 返回不包含此条件的全部数据集
-
-
条件查询
-
查询谓词
__exact: 等值匹配
Book.objects.filter(id__exact=1)
等同于select * from book where id=1
__contains: 包含指定值
Book.objects.filter(id__contains=1)
等同于select * from book where id like \'%1%\'
__startswith:以XXX开始
Book.objects.filter(id__startwith=1)
等同于select * from book where id like \'1%\'
__endswith:以XXX结束
Book.objects.filter(id__endswith=1)
等同于select * from book where id like \'%1\'
__gt:大于指定值
Book.objects.filter(id__gt=1)
等同于select * from book where id>1
__gte:大于等于
Book.objects.filter(id__gte=1)
等同于select * from book where id >=1
__lt: 小于
Book.objects.filter(id__lt=1)
等同于select * from book where id <1
__lte: 小于等于
Book.objects.filter(id__lte=1)
等同于select * from book where id <=1
__in:查找数据是否在指定范围内
Book.objects.filter(id__in=[1,2])
等同于select * from book where id in (1,2)
__range: 查找数据是否在指定的范围内
Book.objects.filter(id__range=(2,5))
等同于select * from book where id between 2 and 5
ORM 更新操作
- 更新一个数据的步骤
- 1 查
- 通过get()得到要修改的实体对象
- 2 改
- 通过对象.属性的方式修改数据
- 3保存
- 通过对象.save()保存数据
- 1 查
ORM 删除操作
- 删除步骤
- 1 查
- 查找到结果对应的数据队形
- 2 删
- 使用对象.delete()方法实现删除
- 1 查
- 伪删除
- 添加字段表示是否可用,默认设置为True,当需要删除时设置为False
- 确保显示数据的地方,均过滤了添加的字段为True
- 更新一个数据的步骤
-
以上是关于Django ORM 操作的主要内容,如果未能解决你的问题,请参考以下文章