Django模型中基于子群的SQL插值

2024-06-25 22:59:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下带有以下数据的sheetinfo模型:

|    Trav    |   Group    |   Subgroup   | Sheet_num  | T_val  |
|  SAT123A01 |   SAT123   |      A       |     1      |   400  |
|  SAT123A02 |   SAT123   |      A       |     2      |   0    |
|  SAT123A03 |   SAT123   |      A       |     3      |   0    |
|  SAT123A04 |   SAT123   |      A       |     4      |   0    |
|  SAT123A05 |   SAT123   |      A       |     5      |   500  |
|  SAT123B05 |   SAT123   |      B       |     5      |   400  |
|  SAT123B04 |   SAT123   |      B       |     4      |   0    |
|  SAT123B03 |   SAT123   |      B       |     3      |   0    |
|  SAT123B02 |   SAT123   |      B       |     2      |   500  |
|  SAT124A01 |   SAT124   |      A       |     1      |   400  |
|  SAT124A02 |   SAT124   |      A       |     2      |    0   |
|  SAT124A03 |   SAT124   |      A       |     3      |    0   |
|  SAT124A04 |   SAT124   |      A       |     4      |   475  |

我想用正确的T值对表格进行插值和更新

公式为:

new_t_val = delta / (cnt -1) * sheet_num + min_tvc_of_subgroup   

例如前5名:

|    Trav    |   Group    |   Subgroup   | Sheet_num  | T_val  |
|  SAT123A01 |   SAT123   |      A       |     1      |   400  |
|  SAT123A02 |   SAT123   |      A       |     2      |   425  |
|  SAT123A03 |   SAT123   |      A       |     3      |   450  |
|  SAT123A04 |   SAT123   |      A       |     4      |   475  |
|  SAT123A05 |   SAT123   |      A       |     5      |   500  |

我有一个django查询,它可以用来更新数据,但是它很慢,并且会在一段时间后停止(由于类型错误等)

我的问题是,有没有一种方法可以在SQL中实现这一点?你知道吗


Tags: 数据groupvalnumsheetsubgrouptravsheetinfo
1条回答
网友
1楼 · 发布于 2024-06-25 22:59:46

作为一个数据库调用这样做的能力在stockdjango中是不存在的。第三方软件包仍然存在:https://github.com/aykut/django-bulk-update

该软件包的工作原理示例:

rows = Model.objects.all()
for row in rows:
    # Modify rows as appropriate
    row.T_val = delta / (cnt -1) * row.sheet_num + min_tvc_of_subgroup
Model.objects.bulk_update(rows)

对于1000000范围内的数据集,这应该具有合理的性能。遍历和.save()—遍历每个对象时的大部分瓶颈是数据库调用的开销。python部分相当快。上面的示例只有两个数据库调用,因此可能要快一个数量级或两个数量级。你知道吗

相关问题 更多 >