Django里面ORM增删改查语法

本文详细介绍了Django ORM的增删改查操作,包括单条与批量数据的添加、修改、删除,以及各种查询方式如精确查询、模糊查询、比较查询、范围查询和日期查询。还涉及到了聚合函数的使用和数据排序。此外,文章还讲解了一对多、多对一关系的查询方法以及如何判断查询集是否为空。

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

Django里面ORM增删改查语法

前提注意:在做增删改查的时候,你的数据库必须迁移成功!

Django往数据库添加数据语法(两种)

第一种:
book=数据库表对象
book.对象里面的字段=(’******‘)
#添加完了之后
book.save()#将这些数据添加到数据中

图例:
在这里插入图片描述
数据库中:
在这里插入图片描述

第二种:
变量名=数据表对象.objects.creare(字段=****,字段2=****)

图例
在这里插入图片描述
数据库中:
在这里插入图片描述

第三种(批量创建数据):

使用 django.db.models.query.QuerySet.bulk_create()批量创建对象。减少SQL查询次数
改进如下:

querysetlist=[]
for i in resultlist:
	querysetlist.append(Account(name=i))
Account.objects.bulk_create(querysetlist)

Django修改数据库数据语法:

变量名=模型类名.objects.get(字段=) #先从数据库中查找获取要修改的值
变量名.字段=’新的值‘ #这边就是将获取到的值进行修改
变量名.save()

图例:
在这里插入图片描述
数据库中的值:
在这里插入图片描述

Django删除数据库数据语法:

变量名=模型类名.objects.get(字段=‘值’) #从数据库中查找到数据
变量名.delete() #删除这条数据

图例:
(还没删除数据时候的数据库):

在这里插入图片描述

删除中。。。。

在这里插入图片描述
删除后数据库:
在这里插入图片描述
(没有ID 为 8 的数据了!)

Django查询数据库数据语法:

查询方法:基本查询  、  过滤查询  

基本查询

基本查询分为3种:
get----->查询单一(一条数据),如果这条是数据库不存在会报错(DoseNotExist异常),如果存在多个一样的数据结果也会报错(MultipleObjectsReturned异常)
all----->查询多个数据
count--->查询到多个数据的总数量

get:

用法: 模型类名.objects.get(字段=”值“)

在这里插入图片描述

all:

用法: 模型类名.objects.all()

在这里插入图片描述
count:

用法: 模型类名.objects.count()

在这里插入图片描述

过滤查询(条件查询)

根据需要精确查找单个数据:
1、模型类.objects.filter(字段=“值”) 
2、模型类.objects.get(字段=“值”) 
3、模型类.objects.filter(字段__exact=“值") #__exact 是表示判等(精确查找)

代码(例子:查询id=1的英雄):
在这里插入图片描述

模糊查询:
模型类名.objects.filter(字段__contains="值") #__contains:是否包含。
#startswith、endswith:以指定值开头或结尾。
模型类名.objects.filter(字段__endswith="值") #endswith:结尾
模型类名.objects.filter(字段__startswith="值") #endswith:开头

代码举例:
1、(例子:查询英雄模型类中包含“猪”的英雄):
在这里插入图片描述
2、(例子:查询英雄模型类中开头包含“曹“的英雄):
在这里插入图片描述

3、(例子:查询英雄模型类中结尾包含“香”的英雄):
在这里插入图片描述

比较查询:
__gt #大于
__lt #小于
__gte #大于等于
__lte #小于等于
.exclude #不等于

代码举例:
(1、查询ID大于3的英雄):
在这里插入图片描述
(2、查询ID大于等于3的英雄):
在这里插入图片描述
(3、查询ID小于3的英雄):
在这里插入图片描述
(4、查询ID小于等于3的英雄):
在这里插入图片描述
(4、查询ID不等于3的所有英雄):

在这里插入图片描述

范围查询:
in:是否包含在范围内。

代码举例:
(1、查询ID为1、3、5的英雄)
在这里插入图片描述
(2、查询ID不在1、3、5的所有英雄)
在这里插入图片描述

日期查询:
year、month、day、week_day、hour、minute、second #对日期时间类型的属性进行运算。

代码举例:
(1、查询2014年发表的书):
在这里插入图片描述
(2、查询2014年后发表的书):
在这里插入图片描述

F对象
  • 作用:实现属性之间 的比较
  • 使用与导包
#导包
from django.db.models import F,Q

语法:f(属性名)

代码举例:
(1、书本阅读量小于等于评论量的书)
在这里插入图片描述
(2、阅读量小于等于2倍评论量)
在这里插入图片描述

Q对象
  • 作用:实现mysql里的not and or(与 、或 、非)
  • 使用符合:& | ~

代码举例:
(1、与 [&]:查询阅读量的书本大于20,并且书的ID必须大于1)(三种方法):
第一种:
在这里插入图片描述
第二种:
在这里插入图片描述
第三种:
在这里插入图片描述
(2、或[ | ]:查询阅读量大于20 或者编号小于1):
在这里插入图片描述
(3、非 [ ~ ]:查除了ID是3的所有英雄):
在这里插入图片描述

聚合函数:

导包:from django.db.models import Avg, Count, Sum, Max, Min  #导了包才能使用
使用方法: 模型类名.objects.aggregate(参数(‘字段’)) #aggregate就是聚合函数
参数有:
Avg:平均值
Count:总个数
Sum:求和
Max:最大值
Min:最小值

代码举例:
(1、最大值:求评论量最多的书本):
在这里插入图片描述
(2、最小值:求借阅书本最少的书本):
在这里插入图片描述

(3、平均值:求所有评论量的平均值):
在这里插入图片描述
(4、求和:求所有评论量的总和):
在这里插入图片描述
(5、总量:求所有英雄总量):
第一种:
在这里插入图片描述

第二种:
在这里插入图片描述

排序:

用法:模型类名.objects.条件().order_by('字段')#.order_by就是排序

代码举例:
「数据库信息:」
在这里插入图片描述

(1、以阅读量正序排序所有书本(小到大)):
在这里插入图片描述
(2、以阅读量倒序排序所有书本(大到小))
在这里插入图片描述

一对多,多对一的查询

查询一对多数据时一对应多方的数据(根据一找多方数据):
使用方法:
查询一下多方所有数据
一的对象.多的模型类小写_set.all()
查询一下多方(条件)数据:
一的对象.多的模型类小写.条件

代码举例:
前提:一本书可以多个人英雄(所以书(book书表)和英雄(hero英雄表)是一对多的关系)
(1、从西游记这本书里面的所有英雄)「通过书找书里面所有英雄」:
在这里插入图片描述

查询多对一时多对应一的方数据(根据多方找一方的数据):
在多的一方有设计一个外键所以:直接使用外键(没有外键会报错找不到的)

代码举例:
(1、从英雄刘备里面找到这个书叫什么)「通过英雄找书本」:
在这里插入图片描述

关联过滤查询

查询一的模型 条件是对多的一方属性进行判断:

代码举例:
(1、查询英雄是孙尚香的书籍 「提示:条件如果需要关联模型的字段 那么 就使用 关联模型类小写__属性名__条件运算符 = ‘xxx’」):
在这里插入图片描述
(2、查询图书 书的英雄描述包含 ‘发’):
在这里插入图片描述

查询多的模型 条件是对一的一方属性进行判断:

代码举例:
(1、查询西游记里所有有英雄 「提示:条件使用关联的模型类的字典 一模型类外键名__一模型类属性名__条件运算符 = 值」)
在这里插入图片描述
(2、查询阅读量大于等于20的书的所有的英雄)
在这里插入图片描述

判断查询集是否为空

exists()方法 返回True有数据 False没有数据
代码举例:
(1、判断英雄模型类里面是否为空):
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值