gpt4 book ai didi

python - 查询集注释中的动态字段名称

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:46 25 4
gpt4 key购买 nike

我需要用传入的变量值重命名输出字段名称。有一个函数:

def metric_data(request, test_id, metric):
metric_name = metric
data = ServerMonitoringData.objects. \
filter(test_id=test_id). \
annotate(timestamp=RawSQL("((data->>%s)::timestamp)", ('timestamp',))).\
annotate(metric=RawSQL("((data->>%s)::numeric)", (metric,))). \
values('timestamp', "metric")

因此在这种情况下,无论变量 metric 的值是什么,输出都如下所示:

 {"timestamp": "0:31:02", "metric": "8.82414500398"}

我需要一个键名等于度量变量的输出(如果度量 == 'CPU_iowait'):

{"timestamp": "0:31:02", "CPU_iowait": "8.82414500398"}

尝试使用这样的东西:

    metric_name = metric
...
annotate(metric_name=F('metric')).\
values('timestamp', metric_name)

但它试图在存在“metric_name”时查找“CPU_iowait”列。那么有什么方法可以将字段名称作为变量传递吗?

最佳答案

# use dict to map the metric's name to a RawSQL query 
# and pass it as keyword argument to `.annotate`.
metric_mapping = {
metric: RawSQL("((data->>%s)::numeric)", (metric,))
}
queryset.annotate(**metric_mapping)

关于python - 查询集注释中的动态字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42831588/

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