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获取元素在数组中索引号的方法
Jul 15 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
python扫描proxy并获取可用代理ip的实例
Aug 07 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
实践Vim配置python开发环境
Jul 02 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
Puppeteer使用示例详解
Jun 20 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
解决python运行效率不高的问题
Jul 20 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 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
Array of country list in PHP with Zend Framework
2011/10/17 PHP
php 使用array函数实现分页
2015/02/13 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
python版简单工厂模式
2017/10/16 Python
python opencv读mp4视频的实例
2018/12/07 Python
Python常用库大全及简要说明
2020/01/17 Python
公司培训心得体会
2014/01/03 职场文书
旷课检讨书2000字
2014/01/14 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
学习党代会心得体会
2014/09/05 职场文书
售房协议书范本
2015/08/11 职场文书
推广普通话主题班会
2015/08/17 职场文书
解除租赁合同协议书
2016/03/21 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
python执行js代码的方法
2021/05/13 Python
python基础入门之字典和集合
2021/06/13 Python
零基础学java之循环语句的使用
2022/04/10 Java/Android