Django框架 查询Extra功能实现解析


Posted in Python onSeptember 04, 2019

extra

extra(select=None, where=None, params=None,
   tables=None, order_by=None, select_params=None)

有些情况下,Django的查询语法难以简单的表达复杂的 WHERE 子句,对于这种情况, Django 提供了 extra() QuerySet修改机制 — 它能在 QuerySet生成的SQL从句中注入新子句。

extra可以指定一个或多个 参数,例如 select, where or tables. 这些参数都不是必须的,但是你至少要使用一个!要注意这些额外的方式对不同的数据库引擎可能存在移植性问题.(因为你在显式的书写SQL语句),除非万不得已,尽量避免这样做.

参数之select

The select 参数可以让你在 SELECT 从句中添加其他字段信息,它应该是一个字典,存放着属性名到 SQL 从句的映射。

queryResult=models.Article




 .objects.extra(select={'is_recent': "create_time > '2018-04-18'"})

结果集中每个 Entry 对象都有一个额外的属性is_recent, 它是一个布尔值,表示 Article对象的create_time 是否晚于2018-04-18.

练习:

# in sqlite:
  article_obj=models.Article.objects






.filter(nid=1)







.extra(select={"standard_time":"strftime('%%Y-%%m-%%d',create_time)"})







.values("standard_time","nid","title")
  print(article_obj)
  # <QuerySet [{'title': 'MongoDb 入门教程', 'standard_time': '2017-09-03', 'nid': 1}]>

参数之where /tables

您可以使用where定义显式SQL WHERE子句 - 也许执行非显式连接。您可以使用tables手动将表添加到SQL FROM子句。

where和tables都接受字符串列表。所有where参数均为“与”任何其他搜索条件。

练习:

queryResult=models.Article




 .objects.extra(where=['nid in (1,3) OR title like "py%" ','nid>2'])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Django使用forms来实现评论功能
Aug 17 Python
Python随机数random模块使用指南
Sep 09 Python
详解flask入门模板引擎
Jul 18 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
Python如何实现转换URL详解
Jul 02 Python
简单了解python的一些位运算技巧
Jul 13 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
Python配置文件处理的方法教程
Aug 29 Python
Python序列对象与String类型内置方法详解
Oct 22 Python
python将四元数变换为旋转矩阵的实例
Dec 04 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 Python
python 绘制场景热力图的示例
Sep 23 Python
Django框架 Pagination分页实现代码实例
Sep 04 #Python
python 动态迁移solr数据过程解析
Sep 04 #Python
Django框架 信号调度原理解析
Sep 04 #Python
Django Admin中增加导出Excel功能过程解析
Sep 04 #Python
Django Admin中增加导出CSV功能过程解析
Sep 04 #Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 #Python
通过Python编写一个简单登录功能过程解析
Sep 04 #Python
You might like
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
cakephp常见知识点汇总
2017/02/24 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
基于jquery的表格排序
2010/09/11 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
python3简单实现微信爬虫
2015/04/09 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
python中metaclass原理与用法详解
2019/06/25 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
python如何输出反斜杠
2020/06/18 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
别名指示符是什么
2012/10/08 面试题
小学数学教学反思
2014/02/02 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
Python WSGI 规范简介
2021/04/11 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL