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 ...
随机推荐
- keras中的Flatten和Reshape
最近在看SSD源码的时候,就一直不理解,在模型构建的时候如果使用Flatten或者是Merge层,那么整个数据的shape就发生了变化,那么还可以对应起来么(可能你不知道我在说什么)?后来不知怎么的, ...
- java.lang.NoSuchMethodException: com.sun.proxy.$Proxy
删掉了@Transactional注解,结果成功了 是这个注解造成的. 是ssh2的整合强制我们使用分层架构.
- C++之PIMPL模式
1 PIMPL解释 PIMPL(Private Implementation 或 Pointer to Implementation)是通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏. ...
- 一个轻量级AOP的实现(开源)
事先声明,本项目参考AOP in C#和园内大神张逸的文章,思路神马的都不是自己的! 为了让项目的代码看起来更干净,需要一个AOP! 于是就实现了一个非常简单的,非常轻量级,有多轻量级呢? 实现的AO ...
- 数论 N是完全平方数 充分必要条件 N有奇数个约数
N是完全平方数 <----> N有奇数个约数 设:N = n*n 充分性: 1.N=1时,N的约数为1,为奇数 2.N>1时,1.....n......N,其中 1, n, N为N的 ...
- Win7点击文件夹右键可打开cmd控制台,并获取当前目录
当我们用cmd时,有时要切换到某个文件夹的目录,可以在当前目录下,按住shift单击右键打开控制台,也可以在鼠标右键中添加cmd启动命令: 1.在开始搜索框输入regedit,打开注册表: 2.打开 ...
- PHP错题误区
1,$bool = TRUE;echo gettype($bool); //这个输出类型:booleanecho is_string($bool); //这个用echo是不能输出布尔型的,只有va ...
- shell json简单处理
- 第一篇:构建第一个SpringBoot工程
简介 spring boot 它的设计目的就是为例简化开发,开启了各种自动装配,你不想写各种配置文件,引入相关的依赖就能迅速搭建起一个web工程.它采用的是建立生产就绪的应用程序观点,优先于配置的惯例 ...
- 【网络爬虫】【java】微博爬虫(五):防止爬虫被墙的几个技巧(总结篇)
爬虫的目的就是大规模地.长时间地获取数据,跟我们正常浏览器获取数据相比,虽然机理相差不大,但总是一个IP去爬网站,大规模集中对服务器访问,时间一长就有可能被拒绝.关于爬虫长时间爬取数据,可能会要求验证 ...