gpt4 book ai didi

python - 基于 django 模型中的子组在 SQL 中进行插值

转载 作者:行者123 更新时间:2023-11-29 12:01:15 25 4
gpt4 key购买 nike

我有以下 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_val 插入和更新表。

公式为:

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 中完成这个任务?

最佳答案

现有的 Django 中不存在将这一操作作为一个数据库调用的能力。但存在第 3 方软件包: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)

对于高达 1,000,000 范围的数据集,这应该具有合理的性能。迭代和保存每个对象的大部分瓶颈是数据库调用的开销。 python 部分相当快。上面的示例只有两个数据库调用,因此速度可能会快一个或两个数量级。

关于python - 基于 django 模型中的子组在 SQL 中进行插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32333700/

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