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 17 Python
Python的装饰器使用详解
Jun 26 Python
Django实现组合搜索的方法示例
Jan 23 Python
python实现textrank关键词提取
Jun 22 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
pyqt5 使用cv2 显示图片,摄像头的实例
Jun 27 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
python函数修饰符@的使用方法解析
Sep 02 Python
Jupyter Notebook 远程访问配置详解
Jan 11 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
密码强度检测效果实现原理与代码
2013/01/04 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
2016/04/18 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
python实现统计代码行数的方法
2015/05/22 Python
Python版名片管理系统
2018/11/30 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
介绍一下write命令
2014/08/10 面试题
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
连锁经营管理专业大学生求职信
2013/10/30 职场文书
在职人员函授期间自我评价分享
2013/11/08 职场文书
小学信息技术教学反思
2014/02/10 职场文书
工业设计毕业生自荐信
2014/04/13 职场文书
参观邀请函范文
2015/02/02 职场文书