文章目录

  • 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数据库操作查询相关推荐

  1. Django模型之数据库操作-查询

    六.数据库操作-查询 6.1基础条件查询 1 基本查询 get查询单一结果,如果不存在会抛出模型类.DoesNotExist异常. all查询多个结果.[返回的所有结果是列表] count查询结果数量 ...

  2. Django-- (三) Django数据库操作

    1.Django数据库 Django 非常适合构建数据库驱动型网站,它提供了简单而强大的工具(ORM),易于使用 Python 执行数据库查询. 2.ORM介绍 Object Relational M ...

  3. django数据库操作和中间件

    数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...

  4. dede diy.php查询数据,织梦二次开发数据库操作查询、插入、更新、删除实例

    /* DedeCms 数据库使用实例说明 */ require_once (dirname(__FILE__) . "/include/common.inc.php"); //新建 ...

  5. mysql子查询sysdate_MySQL T6 数据库操作——查询(三)高级查询

    复习 算术运算符:+ - * / % [针对数值型,select子句,where子句] 查询大于18岁的学生,学生表内存的是生日 birthday where year(sysdate()) - ye ...

  6. mysql查询工资最高三人6_MySQL T6 数据库操作——查询(三)高级查询

    复习 算术运算符:+ - * / % [针对数值型,select子句,where子句] 查询大于18岁的学生,学生表内存的是生日 birthday where year(sysdate()) - ye ...

  7. Django数据库操作(MySQL+Djan)

    1.mySQL 使用 pymysql 安装 pip install pymysql 配置 引入pymysql 并将pymysql 设置为 mysql的使用方式 2.设置 settings.py 文件修 ...

  8. 微信小程序mysql查询_微信小程序云开发数据库操作查询记录

    官方文档解读: 查询记录 1. 打开 pages/databaseGuide/databaseGuide.js 文件,定位到 onQuery 方法 2. 把注释掉的代码解除注释,onQuery 方法会 ...

  9. 查询供应商姓孙的MySQL_MySQL数据库操作--查询

    一,条件 where后面支持多种运算符,进行条件的处理 比较运算 逻辑运算 模糊查询 范围查询 空判断 使用where子句对表中的数据筛选,符号条件的数据会出现在结果集中 语法如下: select 字 ...

最新文章

  1. LIVE 预告 | 快手宋洋:千亿特征,万亿参数,快手推荐精排模型的发展史
  2. 洛谷P1352 没有上司的舞会题解
  3. 正式启动|2020腾讯犀牛鸟云开发校园技术布道师养成计划
  4. Redis应用案例 查找某个值的范围
  5. 局部遮罩 shade(二)
  6. 微软将降低Visual Studio对操作系统的影响
  7. 创建对象并且使用对象的属性和方法
  8. 如何保护自己的机器不受“网络执法官”盗用IP地址及密码
  9. 贝尔曼方程详尽推导(无跳步|带图)
  10. 可汗学院-统计学-学习笔记
  11. css的语义---Cascading Style Sheet
  12. Java+SSM(Spring+SpringMVC+Mybatis)个性化购物商城推荐系统 电子商务推荐系统 基于用户、项目、聚类、混合的协同过滤推荐算法WebShopRSMEx 源代码下载
  13. 本地安装并创建MySQL数据库
  14. 小白的靶机VulnHub-Temple of Doom
  15. testbench——文件读入输出
  16. 花了10分钟,终于弄懂了特征值和特征向量到底有什么意义
  17. BugKu_python_jail
  18. 一款功能强大且专业好用的CAD图形创建工——corelcad 2021
  19. 第七周 手机摄影——用手机怎样拍会更好
  20. C++程序员职业规划

热门文章

  1. pv uv ip的区别
  2. i5-8265U性能怎么样?相当于什么水平
  3. 运维工程师岗位-面试问答
  4. Excel如何添加页眉,页脚?
  5. 光大证券分析报告(0608)
  6. 硅胶隆胸的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. android的XML连续动画
  8. 美国公务员收入知多少
  9. gui-gio:hello world的demo0
  10. 魅族18 X凭什么成为年度游戏旗舰?