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检测远程服务器tcp端口的方法
Mar 14 Python
python实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
python中pass语句用法实例分析
Apr 30 Python
python实现kNN算法
Dec 20 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
python的pip安装以及使用教程
Sep 18 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
python爬虫实现获取下一页代码
Mar 13 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
详解python的变量缓存机制
Jan 24 Python
python画条形图的具体代码
Apr 20 Python
Django框架中视图的用法
Jun 10 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下统计用户在线时间的一种尝试
2010/08/26 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
php数组和链表的区别总结
2019/09/20 PHP
javascript天然的迭代器
2010/10/29 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
VueJS全面解析
2016/11/10 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
python的re模块应用实例
2014/09/26 Python
python私有属性和方法实例分析
2015/01/15 Python
Python pickle模块用法实例
2015/04/14 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
python添加菜单图文讲解
2019/06/04 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
python十进制转二进制的详解
2020/02/07 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
应用电子专业学生的自我评价
2013/10/16 职场文书
《影子》教学反思
2014/02/21 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
家长通知书家长意见
2014/12/30 职场文书
2015年新农合工作总结
2015/03/30 职场文书
2016猴年春节问候语
2015/11/11 职场文书
python执行js代码的方法
2021/05/13 Python