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标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
python处理大数字的方法
May 27 Python
Python写的一个定时重跑获取数据库数据
Dec 28 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
Python迭代器定义与简单用法分析
Apr 30 Python
python 移除字符串尾部的数字方法
Jul 17 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
django-filter和普通查询的例子
Aug 12 Python
Python学习笔记之For循环用法详解
Aug 14 Python
Pandas 缺失数据处理的实现
Nov 04 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
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
javascript Demo模态窗口
2009/12/06 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
Python解析nginx日志文件
2015/05/11 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
python统计中文字符数量的两种方法
2019/01/31 Python
Python实战购物车项目的实现参考
2019/02/20 Python
Python3分析处理声音数据的例子
2019/08/27 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
python中get和post有什么区别
2020/06/19 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
《只有一个地球》教学反思
2014/02/14 职场文书
医药营销个人求职信
2014/04/12 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
Nginx内网单机反向代理的实现
2021/11/07 Servers
DE1107机评
2022/04/05 无线电
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server