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 13 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
python turtle工具绘制四叶草的实例分享
Feb 14 Python
python编写俄罗斯方块
Mar 13 Python
浅析NumPy 切片和索引
Sep 02 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 显示客户端IP与服务器IP的代码
2010/10/12 PHP
关于svn冲突的解决方法
2013/06/21 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
php rsa加密解密使用详解
2015/01/14 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
面向对象的javascript(笔记)
2009/10/06 Javascript
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
Node.js实现数据推送
2016/04/14 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
模具专业毕业推荐信
2014/03/08 职场文书
团支部推优材料
2014/05/21 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
办公室文员岗位职责
2015/02/04 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
公司庆典主持词
2015/07/04 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
python解决12306登录验证码的实现
2021/04/18 Python