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中命名空间的查找规则LEGB
Aug 06 Python
Python学习小技巧之列表项的排序
May 20 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
Django之路由层的实现
Sep 09 Python
pymysql模块的操作实例
Dec 17 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 Python
Python find()、rfind()方法及作用
Dec 24 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者的疑难问答(2)
2006/10/09 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP比你想象的好得多
2014/11/27 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
Python读取mp3中ID3信息的方法
2015/03/05 Python
详谈python read readline readlines的区别
2017/09/22 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
python实现猜数字游戏
2020/03/25 Python
Python数据可视化图实现过程详解
2020/06/12 Python
Python 求向量的余弦值操作
2021/03/04 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
学生档案自我鉴定
2013/10/07 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
婚庆司仪开场白
2015/05/29 职场文书
集结号观后感
2015/06/08 职场文书
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫