使用django orm执行复杂查询的一些实用函数

dj-querytools的Python项目详细描述


DJ查询工具

一个函数集合,使为django项目构建聚合sql查询更容易一些

安装

pip install dj-querytools

用法

简单聚合:

假设模型如下:

class Todo(models.Model):
    owner = models.CharField(max_length=30)
    title = models.CharField(max_length=30)
    status = models.CharField(max_length=30, choices=TODO_STATUSES)
    size = models.PositiveIntegerField(default=1)
    due = models.DateField()
    due_time = models.DateTimeField()

group_by_and_aggregate

示例

group_by_and_aggregate(qs,'size','Sum')>>20

group_by_and_annotate

按提供的字段执行聚合和分组:

示例

result=group_by_and_annotate(qs,'status','Count')>>{'D':5,'N':1,'P':8}

as_timeseries

qs = Todo.objects.filter(owner="Jack")
as_timeseries(
    qs,
    'due_time',
    'id',
    'Count',
    '2018-11-01',
    '2018-11-10'
)
>> [{'x': '2018-11-01', 'y': 3.0}, {'x': '2018-11-02', 'y': 3.0}, {'x': '2018-11-03', 'y': 0}, {'x': '2018-11-04', 'y': 2.0}, {'x': '2018-11-05', 'y': 2.0}, {'x': '2018-11-06', 'y': 0}, {'x': '2018-11-07', 'y': 0}, {'x': '2018-11-08', 'y': 0}, {'x': '2018-11-09', 'y': 0}, {'x': '2018-11-10', 'y': 0}]

pivot_table

给定一个平面查询集,将其按一个或多个字段分组。

  • 字段用逗号分隔
  • (可选)提供序列化程序函数来序列化项(否则它将只追加queryset行)
result=pivot_table(qs,'owner,status',serialize_todo)>>{'Jack':{'N':[{'title':'Day year outside whatever int'}],'P':[{'title':'Answer society close example '},{'title':'Raise real individual general'}],'D':[{'title':'Number organization particula'},{'title':'Least activity herself than c'},{'title':'Country local pretty yourself'}]},'Jane':{'P':[{'title':'Prevent do still teacher grou'},{'title':'Include they management first'},{'title':'Number court few loss sort mu'},{'title':'That federal end local dream '},{'title':'Able ask listen. Cost ball me'},{'title':'Bad know meeting compare room'}],'D':[{'title':'Through town stay able car di'},{'title':'Tree design candidate because'}]}}

其他材料

  • 有关完整功能列表,请参见spec.txt
  • 例如,检查example_app/tests.py

贡献

更新规范:

python manage.py test --testrunner=testreporter.runner.BDDTestRunner

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java测试访问令牌过滤器   close()上的java Apache POI运行时异常   java为什么Eclipse中的GWT总是显示错误404?   java从socket python服务器接收消息   java mediaRecorder:start()函数失败   不关闭DB连接可能是Tomcat上Java堆溢出的原因吗?   java JFrame无法关闭   java BigQuery加载本地文件不起作用,位置有问题   java可以在递归任务中使用吗?   servlets如何从JSESSIONID加载Java HttpSession?   java将JFileChooser与PDFBox一起使用时,文件不会另存为pdf,但保存时不带扩展名   java将处理结果存储在表中   java算法发现循环世界中重叠间隔的持续时间(24小时)   在windows 10上双击Eclipse安装程序可执行文件(eclipseinstjrewin64.exe)后,java不会发生任何事情   java编译和部署自定义Solr请求处理程序   Java/Android崩溃ApacheCommonsio2。4.jar   spring web应用程序中的java集成收件箱功能   java Grizzly、Jersey和Spring自动布线问题   java如何在pom中添加jar文件依赖项。xml   关于Android中大量GUI更新编码的java概念(GUI处理程序)