Django的ORM基础增删改查
查询
- all()
- 返回模型类对应表格中所有数据,返回查询集
- get()
- 返回表格中满足条件的一条且只能有一条数据
- 如果查到多条数据,则抛异常:MultipleObjectsReturned
- 查询不到数据,则抛异常:DoesNotExist
- filter()
- 参数写查询条件,返回满足条件的数据,返回查询集
- 条件格式:模型类属性名__条件名 = 值
==条件名==
- 判等 exact
list=BookInfo.books.filter(id__exact=1)可简写为:list=BookInfo.books.filter(id=1)
- 模糊查询
- 包含:contains
- 结尾和开头:endswith;startswith
list = BookInfo.objects.filter(btitle__contains = "部")list = BookInfo.objects.filter(btitle__startswith = "天")
- 空查询 isnull
<!--查询标题为空-->BookInfo.objects.filter(btitle__isnull = Flase)
- 范围查询
BookInfo.objects.filter(id__in=[1,3,5])
- 比较查询
- 大于:gt
- 小于:lt
- 大于等于:gte
BookInfo.objects.filter(id__gt=2)
- 日期查询
BookInfo.objects.filter(bpub_date__year = 1980)BookInfo.objects.filter(bpub_date__gt = date(1980,12,1)
- include():查询不满足条件的数据,返回
BookInfo.objects.include(id=3)
- F对象:类属性之间比较
- 需要导入:from django.db.models import F
demo:查找阅读量大于评论数2倍0的BookInfo.objects.filter(bread__gt = F(bcomment)*2)
- 需要导入:from django.db.models import F
- Q对象:多个属性之间比较
- 导入模块:from django.db.models import Q
- 或关系:|
- 与关系:&
- 取反:~
BookInfo.objects.filter(Q(bcomment__gt = 40)|Q(bread__gt = 20))BookInfo.objects.filter(~Q(id=3))
- order_by:排序 返回查询集
- 默认从小到大
- 加 - :从大到小
BookInfo.objects.all().order_by(id)BookInfo.objects.filter(id__gt = 2).order_by('-bread')
- 聚合 aggregate 返回字典
- 对查询结果进行聚合操作
- sum count max min avg
- 使用前导入:from django.db.models import Sum
例:查询所有图书的数目。BookInfo.objects.aggregate(Count('id')){'id__count': 5}例:查询所有图书阅读量的总和。BookInfo.objects.aggregate(Sum('bread')){'bread__sum': 126}
- count()函数
- 作用:统计满足条件数据的数目。
例:统计所有图书的数目。BookInfo.objects.count()注意返回值类型例:统计id大于3的所有图书的数目。BookInfo.objects.filter(id__gt=3).count()
删除
- 对象.delete()
修改
- 获取对象,重新写
- save():保存
查询集
查询集特性
- 惰性查询
- 只有在实际使用查询集中的数据的时候才会发生对数据库的真正查询。
- 缓存
- 当使用的是同一个查询集时,第一次的时候会发生实际数据库的查询,然后把结果缓存起来,之后再使用这个查询集时,使用的是缓存中的结果。
限制查询集
- b[0]就是取出查询集的第一条数据,- b[0:1].get()也可取出查询集的第一条数据。- 如果b[0]不存在,会抛出IndexError异常,- 如果b[0:1].get()不存在,会抛出DoesNotExist异常。多条时抛MultiObjectsReturned
- 对一个查询集进行切片操作会产生一个新的查询集,下标不允许为负数。
exists():判断一个查询集中是否有数据,有返回True
参考了北半球网站的相关资料
Django的ORM基础增删改查的更多相关文章
- Python学习---django之ORM的增删改查180125
模型常用的字段类型参数 <1> CharField #字符串字段, 用于较短的字符串. #CharField 要求必须有一个参数 maxlength, 用于从数 ...
- Django之ORM的增删改查操作流程
总结:ORM的 查.增.删.改 - 查 - client - 有一个展示页面(xxx_show.html) - 这一个页面一输入执行后,get请求向server端发送 - 这个展示页面有添加按钮.删除 ...
- Django之ORM数据库增删改查
总结:ORM的 查.增.删.改 - 查 - client - 有一个展示页面(xxx_show.html) - 这一个页面一输入执行后,get请求向server端发送 - 这个展示页面有添加按钮.删除 ...
- Django之ORM的增删改查
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
- Django ORM 数据库增删改查
Django ORM 数据库增删改查 增 # 创建.增加数据(推荐) models.UserInfo.objects.create(username=') # 创建.增加数据 dic = {'} mo ...
- Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)
day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库: 简称:DataBase ---->DB 数据库即存放数据的仓库, ...
- Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)
摘要: Django项目简单现实过程 pycharm连接数据库 Django之orm简单操作增删改查 一.新建Django项目.配置.设置: 新建Django项目:(为了熟悉Django操作,暂时全部 ...
- ORM基本增删改查
将上一节建造好的数据库 引入Navicate copy_path找到数据表路径 再用navicat打开 创建好的db不只一张表,其中第一张是我们创建的可以用的表 ,其他都是django自带功能所需表 ...
- Django之数据表增删改查
Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse # Create your views here. from a ...
随机推荐
- 关于Spring Security的笔记
1.web.xml配置文件 加载Spring Security,将DelegatingFilterProxy配置在DispatcherServlet之前. <filter> <fil ...
- Java中的final和static
final final可以用在类.方法.变量上. 1.final用在类上,表明当前类它不能被继承,没有子类. 2.final用在方法上,表明当前方法不能被override,不能被重写. 3.final ...
- AutoIt:应用WMI接口,打印远程机器安装的所有应用程序
Dim $computer ="computer name" Dim $Remoteuser ="Login account" Dim $Remotepass ...
- 蓝桥杯G将军
G将军有一支训练有素的军队,这个军队除开G将军外,每名士兵都有一个直接上级(可能是其他士兵,也可能是G将军).现在G将军将接受一个特别的任务,需要派遣一部分士兵(至少一个)组成一个敢死队,为了增加敢死 ...
- CSS:CSS 单位
ylbtech-CSS:CSS 单位 1.返回顶部 1. 尺寸 单位 描述 % 百分比 in 英寸 cm 厘米 mm 毫米 em 1em 等于当前的字体尺寸. 2em 等于当前字体尺寸的两倍. 例如, ...
- 回味经典——uboot1.1.6 之 第二阶段 第三阶段
转自:http://blog.csdn.net/lizuobin2/article/details/52061530 上篇文章说到,再清 BSS 段之后,CPU 跳转到 sdram 里的 start_ ...
- bzoj4066
KD-tree 强制在线就不能愉快的做这道题了. 我们用KD-tree维护平面上的点,这样建出来的树高大概是log,复杂度过得去,但是插入过多会使树深很深,这样就能卡死,那么我们每个10000次插入就 ...
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)(转载)
使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...
- Notice:Array to string conversion的问题
如果后台或者前端输出这样的提示: Notice: Array to string conversion 原因是:用 echo 来输出数组,当然会报错,数组应该用print , print_r , 或 ...
- EF Core的安装、EF Core与数据库结合
一.新建一个.net core的MVC项目 新建好项目后,不能像以前一样直接在新建项中添加ef, 需要用命令在添加ef的依赖 二.EF Cor ...