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写的图片蜘蛛人代码
Aug 27 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
Python3实现的反转单链表算法示例
Mar 08 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
Python使用python-docx读写word文档
Aug 26 Python
python实现控制台输出彩色字体
Apr 05 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
Python控制鼠标键盘代码实例
Dec 08 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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
php获取微信共享收货地址的方法
2017/12/21 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
JS画线(实例代码)
2013/11/20 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
javascript事件模型介绍
2016/05/31 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
python复制文件的方法实例详解
2015/05/22 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
Python读取stdin方法实例
2019/05/24 Python
Django中的用户身份验证示例详解
2019/08/07 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
python实现自动打卡的示例代码
2020/10/10 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
本科生就业推荐信
2014/05/19 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
药店营业员岗位职责
2015/04/14 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python