gpt4 book ai didi

python - 如何在 django 的 sql 查询中进行一般数学运算?

转载 作者:可可西里 更新时间:2023-11-01 08:45:02 25 4
gpt4 key购买 nike

我喜欢在 Django 中执行以下查询,最好不使用迭代。我只希望数据库调用返回下面查询表示的结果。不幸的是根据the docs这似乎不可能;只有AvgMaxMin 等通用函数可用。目前我使用的是 django 1.4,但我很高兴重写 django 1.8 的东西(因此出现了文档页面;我听说 1.8 比 1.4 做得更好)

select sum(c.attr1 * fs.attr2)/ sum(c.attr1) from fancyStatistics as fs
left join superData s on fs.super_id=s.id
left join crazyData c on s.crazy_id=c.id;

注意:

直接在 django 中执行此操作的主要原因是,如果我们想将数据库从 MySQL 更改为更适合 django 的数据库,最好不必重写所有查询。

最佳答案

您应该能够使用 F 表达式获得聚合来完成您想要的大部分操作,而无需使用 SQL。

https://docs.djangoproject.com/en/1.8/topics/db/aggregation/#joins-and-aggregates

aggregate_dict = FancyStatistics.objects.all()\
.aggregate(
sum1=Sum(
F('superdata__crazydata__attr1') * F('attr2'), output_field=FloatField()
) ,
sum2=Sum('superdata__crazydata__attr1')
)
)
result = aggregate_dict['sum1'] / aggregate_dict['sum2']

如果使用的数据类型不同,则需要指定输出字段。

关于python - 如何在 django 的 sql 查询中进行一般数学运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31346071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com