Django 学习 Day10
1.聚合查询
聚合查询是指对一个数据表中的一个字段的数据进行部分或全部的统计查询。差Book数据表中的全部书的平均价格、查询所有书的总数等都需要使用聚合查询。
聚合查询分为:
(1)整表聚合
聚合函数的导入:
from django.db.models import *
聚合函数:Sum、Avg、Count、Max、Min
语法:
MyModel.objects.aggregate(结果变量名=聚合函数(‘列名’))
结果变量名也就是在sql语句中的Count(*) as 别名。也就相当于是别名就是我们的参数中的结果变量名的参数。通过以字典的形式进行表达,方便在程序中进行数据检索和数据获取。
(2)分组聚合
语法:
QuerySet.annotate(结果变量名=聚合函数(‘列名’))
返回值:
QuerySet
###2.原生数据库操作
方案1:
查询:
直接使用MyModel.objects.raw()进行数据库的查询操作。
语法:
MyModel.objects.raw(sql语句,拼接参数)
返回值:
RawQuerySet集合对象【只支持基础操作,比如循环】
示例:
可以发现,这里的item是一个对象。
Django官方并不推荐使用sql语句进行查询。因为可能会出现sql注入的漏洞导致web应用程序产生严重的缺陷和问题。
因此,在sql语句的拼接参数中,通过参数化方式能够防范sql注入攻击。
例子:
当我们没有使用参数化进行参数传递的时候,所有的书籍信息都被导出。
当我们启用参数化查询时,我们成功的防范了sql注入攻击。
Django 学习 Day10相关推荐
- Django介绍和虚拟环境(django特点、MVC、MVT、Django学习资料)
MVT流程: 创建Django项目和应用 django-admin startproject name python manager.py startapp name 视图和ULR 视图的请求和响应 ...
- django学习之路(五)站点管理admin - django - 一直很安静 - Powered by Discuz!
django学习之路(五)站点管理admin - django - 一直很安静 - Powered by Discuz!: "" (Via.) 转载于:https://www.cn ...
- django 学习笔记
django 学习笔记 启动虚拟机: workon bj18_py3 创建一个项目: django-admin.py startproject mysite 启动开发用服务器:从外层项目 mysite ...
- 分享:Django学习笔记(4)---ManyToMany 添加、删除关联、查询
Django学习笔记(4)---ManyToMany 添加.删除关联.查询 http://my.oschina.net/u/572994/blog/105280
- Django学习总结①
Django学习总结① Django基础环境配置好以后,打开pycharm,创建Django项目 视图views 中需要导入 django.http ---> HttpResponsemodel ...
- Django学习目录
Django学习目录 Django框架简介 Django基础 >>点我 ORM介绍 Django中ORM介绍 >>点我 ORM表操作 Django中ORM表相关操作 >& ...
- Python Web框架Django学习(二)
python web框架Django学习(二) 目录: 三.Django创建APP 四.创建登录页面,实现用户交互,后台管理用户(非数据库方式) ========================= ...
- Django学习之十: staticfile 静态文件
目录 Django学习之十: staticfile 静态文件 理解阐述 静态文件 Django对静态文件的处理 其它方面 总结 Django学习之十: staticfile 静态文件 理解阐述 静态文 ...
- django学习笔记03
原创博客地址:django学习笔记03 第一章,模型层 查询集API 一.QuerySet何时被提交 迭代 QuerySet是可迭代的,在首次迭代查询集时执行实际的数据库查询 切片:如果使用切片的&q ...
最新文章
- 2016/12summary
- 函数式编程 - 组合compose
- Kafka解惑之Old Producer(2)——Sync Analysis
- 好消息,关于2005的default provider
- python mysql返回,python操作mysql数据-执行语句返回值直接返回字典类型
- 论文写作——paper Note
- oracle 安装乱码,linux安装Oracle中文乱码问题汇总
- C# 中对于json的解析小结
- python井字棋如何判断输赢_井字棋判断输赢的两种方法
- python正则表达式案例_Python正则表达式--实例秘籍
- 联想拯救者 Legion Y7000P 安装 Ubuntu 18.04.2 LTS amd64 遇到的问题解决
- 开发智能名片小程序时遇到的技术问题以及解决办法
- C++ getchar()函数
- 什么是JDBC(一)-使用JDBC-详解JDBC系列
- Squeezenet中添加OHEM层
- Xcode8 支持 iOS7及以下版本
- Adobe国际认证证书有什么用?
- 关于深度学习方面的一些概念
- 电脑经常弹出“不支持的硬件”解决办法
- MSP430熔丝及加密总结