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 相关文章推荐
python2.7安装图文教程
Mar 13 Python
python RabbitMQ 使用详细介绍(小结)
Nov 08 Python
python+opencv实现阈值分割
Dec 26 Python
解决nohup执行python程序log文件写入不及时的问题
Jan 14 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
Aug 09 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
python如何从文件读取数据及解析
Sep 19 Python
Django1.11自带分页器paginator的使用方法
Oct 31 Python
浅析python内置模块collections
Nov 15 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
python import 上级目录的导入
Nov 03 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
PL-880隐藏功能
2021/03/01 无线电
测试php函数的方法
2013/11/13 PHP
php中的静态变量的基本用法
2014/03/20 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
js回调函数仿360开机
2019/12/26 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
python实现汉诺塔方法汇总
2016/07/25 Python
python读取中文txt文本的方法
2018/04/12 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
网上商城创业计划书范文
2014/01/31 职场文书
霸气队列口号
2014/06/18 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
学校社团活动总结
2015/05/07 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书