启用SQL窗口函数,以便在Django查询中使用。为您的查询添加排名。
项目描述
启用SQL窗口函数,以便在Django查询中使用。为您的查询添加排名。
Django当前版本(1.10)不支持像PostgreSQL中看到的那样[窗口函数]。此实现实现了rank、dense_rank,并为upper_rank添加了快捷方式,用于检索排名的上一值(窗口中最后一个元素的排名)。该实现目前只能在PostgreSQL上工作。
注意:窗口函数的支持已在[问题#26608](https://code.djangoproject.com/ticket/26608)中解决。
快速入门
安装rank
pip install django-rank-query
用法
您可以通过以下方式根据用户姓氏的排名(字母表中的顺序号)注释用户
from rank import DenseRank, UpperRank, Rank users = User.objects.all() users = user.annotate(lower_rank=Rank('last_name')) users = user.annotate(upper_rank=UpperRank('last_name')) users = user.annotate(dense_rank=DenseRank('last_name'))
然后您将拥有带有各种排名的用户查询。例如,您可以通过values函数检索它们
user_ranks = users.values('last_name', 'lower_rank', 'upper_rank')
注意:PostgreSQL不支持将rank函数与GROUP_BY或WHERE子句结合使用。因此,您不能在聚合查询中使用它们。
排名是在当前的select查询中计算的,因此过滤将更改给定元素的排名,因此您不能在例如他的名字过滤的整个表中拥有序列号。这可以通过使用SQL中的子查询来解决,但据我所知,Django不支持它们。
运行测试
代码真的工作吗?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install tox (myenv) $ tox
致谢
用于渲染此包的工具
历史记录
0.1.0 (2017-01-20)
在PyPI上首次发布。
项目详情
关闭
django-rank-query-0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6eef9d1c4048977494cc89be241d4c36a53a485ef00d4aedf2c974d0c70f941f |
|
MD5 | 89841c1f488523b8ac9d5d98610051a6 |
|
BLAKE2b-256 | 036da0af2e03979daa744d018f23931a59a9d3fd3b1696ce86c33955c1f45489 |