Django数据库操作查询
文章目录
- Django数据库操纵查询
- F和Q对象:
- 1.F对象:
- 2.Q对象:
- 2.聚合函数和排序函数
- 1.聚合函数:
- 2.排序函数:
- 3.级联查询:
- 1.关联查询
- 关联过滤查询
- 4.查询集
- **查询集:**
- 两大特性
- 惰性执行:
- 缓存:
- 限制查询集
- 分页:
- 分页:
Django数据库操纵查询
F和Q对象:
1.F对象:
一般用于属性与属性之间的比较
被定义在django.db.models中
举个例子:
>>>from django.db.models import F
>>>表名.objects.filter(属性1__运算符=F('属性2'))
tips: F对象不仅可以用于比较,还可以在F对象上使用算术运算
2.Q对象:
- 一般用于与或非筛选结合
- 被定义在django.db.models中
举个例子:
表示 与 :
>>>from django.bd.models import Q
>>>表名.objects.filter(Q(条件1) & Q(条件2))
表示 或 :
>>>from django.bd.models import Q
>>>表名.objects.filter(Q(条件1) & Q(条件2))
表示 非 :
>>>from django.bd.models import Q
>>>表名.objects.filter(~Q(条件))
2.聚合函数和排序函数
1.聚合函数:
- 使用聚合函数之前需要调用aggregate()过滤器
- 聚合函数被定义在django.bd.models
- 聚合函数有 Sum求和 , Max最大值 , Min最小值 , Avg平均 , Count数量
举个例子:
>>>from django.bd.models import Sum
>>>表名.objects.aggregate(Sum('属性名'))
tips1 : aggregate返回值是一个字典类型
tips2 : 使用count时一般不用aggregate()过滤器 , count返回的是一个数字
2.排序函数:
- 使用order_by对结果进行排序
举个例子:
默认升序:
>>>表名.objects.all().order_by('属性')
举个例子:
降序:
表名.objects.all().order_by('-属性')
3.级联查询:
1.关联查询
多对应的模型类名小写 _set
举个例子:
一到多访问语法:
>>>变量名1 = 表名1.objects.get(条件)
>>>变量名1.表名2_set.all()
多到一访问:
变量名2 = 表名2.objects.get(条件)
变量名2.变量名1
关联过滤查询
使用语法:
关联模型类小写_属性名_条件运算符=值
tips: 如果没有运算符,则为等于
举个例子:
>>>变量名 = 表名.objects.filter(类名小写_属性名_条件运算符如contains = '字符串,这里可以是任意值')
>>>变量名
4.查询集
查询集:
- 即查询结果集,QuerySet , 表示从数据库中获取的对象集合.
- 当调用all() , filter() , exclude() , order_by() 时 , Django会返回查询集
- 对查询集可以再次调用过滤器进行过滤
两大特性
惰性执行:
- 创建查询集的时候不会访问数据库 , 而当数据被使用时 , 才会访问数据库 .
举个例子:
变量名 = 表名.objects.all()
上述语句是不会进行数据库查询的 , 它只是创建了一个查询集
for 表名 in 变量名print(表.属性)
上述语句对创建的查询集进行了遍历迭代操作 , 真正进行了数据库的查询
缓存:
使用同一个查询集,第一次使用会发生数据库查询 , Django会进行本地缓存 , 而当这个查询集被再次使用时 , 不会进行数据库查询 , 而是查询缓存下来的数据 , 减少了数据库查询的次数
from 文件夹.models import 表 [变量名.属性 for 变量名 in 表.objects.all()] [变量名.属性 for 变量名 in 表.objects.all()]
变量名 = 表.objects.方法() [变量名.属性 for 变量名 in 变量] [变量名.属性 for 变量名 in 变量]
经过两段代码对比 , 第二段代码利用查询集 , 再次使用时会使用缓存中的数据. 而第一段代码会重复查询数据库
限制查询集
可以对查询集进行取下标或切片操作
举个例子:
>>>变量名 = 表.objects.方法()[0:2]
上述代码对查询集进行切片操作 , 但此时没有执行查询
>>>变量
输入定义的变量 , 执行查询
分页:
语法:
变量名 = 表.objects.方法()
from django.core.paginator import Paginator
paginator = Paginator(变量名,2)
page = paginator.page(1)
total = paginator.num_pages
询
>>>变量
输入定义的变量 , 执行查询
分页:
语法:
变量名 = 表.objects.方法()
from django.core.paginator import Paginator
paginator = Paginator(变量名,2)
page = paginator.page(1)
total = paginator.num_pages
Django数据库操作查询相关推荐
- Django模型之数据库操作-查询
六.数据库操作-查询 6.1基础条件查询 1 基本查询 get查询单一结果,如果不存在会抛出模型类.DoesNotExist异常. all查询多个结果.[返回的所有结果是列表] count查询结果数量 ...
- Django-- (三) Django数据库操作
1.Django数据库 Django 非常适合构建数据库驱动型网站,它提供了简单而强大的工具(ORM),易于使用 Python 执行数据库查询. 2.ORM介绍 Object Relational M ...
- django数据库操作和中间件
数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...
- dede diy.php查询数据,织梦二次开发数据库操作查询、插入、更新、删除实例
/* DedeCms 数据库使用实例说明 */ require_once (dirname(__FILE__) . "/include/common.inc.php"); //新建 ...
- mysql子查询sysdate_MySQL T6 数据库操作——查询(三)高级查询
复习 算术运算符:+ - * / % [针对数值型,select子句,where子句] 查询大于18岁的学生,学生表内存的是生日 birthday where year(sysdate()) - ye ...
- mysql查询工资最高三人6_MySQL T6 数据库操作——查询(三)高级查询
复习 算术运算符:+ - * / % [针对数值型,select子句,where子句] 查询大于18岁的学生,学生表内存的是生日 birthday where year(sysdate()) - ye ...
- Django数据库操作(MySQL+Djan)
1.mySQL 使用 pymysql 安装 pip install pymysql 配置 引入pymysql 并将pymysql 设置为 mysql的使用方式 2.设置 settings.py 文件修 ...
- 微信小程序mysql查询_微信小程序云开发数据库操作查询记录
官方文档解读: 查询记录 1. 打开 pages/databaseGuide/databaseGuide.js 文件,定位到 onQuery 方法 2. 把注释掉的代码解除注释,onQuery 方法会 ...
- 查询供应商姓孙的MySQL_MySQL数据库操作--查询
一,条件 where后面支持多种运算符,进行条件的处理 比较运算 逻辑运算 模糊查询 范围查询 空判断 使用where子句对表中的数据筛选,符号条件的数据会出现在结果集中 语法如下: select 字 ...
最新文章
- LIVE 预告 | 快手宋洋:千亿特征,万亿参数,快手推荐精排模型的发展史
- 洛谷P1352 没有上司的舞会题解
- 正式启动|2020腾讯犀牛鸟云开发校园技术布道师养成计划
- Redis应用案例 查找某个值的范围
- 局部遮罩 shade(二)
- 微软将降低Visual Studio对操作系统的影响
- 创建对象并且使用对象的属性和方法
- 如何保护自己的机器不受“网络执法官”盗用IP地址及密码
- 贝尔曼方程详尽推导(无跳步|带图)
- 可汗学院-统计学-学习笔记
- css的语义---Cascading Style Sheet
- Java+SSM(Spring+SpringMVC+Mybatis)个性化购物商城推荐系统 电子商务推荐系统 基于用户、项目、聚类、混合的协同过滤推荐算法WebShopRSMEx 源代码下载
- 本地安装并创建MySQL数据库
- 小白的靶机VulnHub-Temple of Doom
- testbench——文件读入输出
- 花了10分钟,终于弄懂了特征值和特征向量到底有什么意义
- BugKu_python_jail
- 一款功能强大且专业好用的CAD图形创建工——corelcad 2021
- 第七周 手机摄影——用手机怎样拍会更好
- C++程序员职业规划