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正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
Python version 2.7 required, which was not found in the registry
Aug 26 Python
python中的五种异常处理机制介绍
Sep 02 Python
简单介绍Python中的struct模块
Apr 28 Python
Python实现简单的四则运算计算器
Nov 02 Python
Django 内置权限扩展案例详解
Mar 04 Python
python简单验证码识别的实现方法
May 10 Python
详解Python中的测试工具
Jun 09 Python
使用turtle绘制五角星、分形树
Oct 06 Python
python list多级排序知识点总结
Oct 23 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
Sep 23 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 mssql 时间格式问题
2009/01/13 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
Python何时应该使用Lambda函数
2019/07/02 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
儿科主治医生个人求职信
2013/09/23 职场文书
八项规定整改方案
2014/02/21 职场文书
服装店营销方案
2014/03/10 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
安全生产大检查方案
2014/05/07 职场文书
励志演讲稿300字
2014/08/21 职场文书
故宫的导游词
2015/01/31 职场文书
小学教师工作总结2015
2015/04/07 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书