1

一个非常简单的菜鸟问题。如何在这个 json_body 变量中放置变量?问题在于所有引号。我不能为此使用 .format 字符串方法,因为 json_body 变量不包含简单的字符串。

from influxdb import InfluxDBClient

json_body = [
{
    "measurement": "cpu_load_short",
    "tags": {
        "host": "server01",
        "region": "us-west"
    },
    "time": "2009-11-10T23:00:00Z",
    "fields": {
        "value": 0.64
    }
}
] 
client = InfluxDBClient('localhost', 8086, 'root', 'root', 'example')
client.create_database('example')
client.write_points(json_body)

来源:https ://github.com/influxdata/influxdb-python#examples

因此,例如,我如何在其中获取变量,例如

"value": 0.64

至:

"value": variable_name?

在示例代码中,所有值都是硬编码的。

4

1 回答 1

0

正确的方法是将字典构建为 Python 对象,使用您的变量,然后使用json.dumps.

例如

import json
x = 42
d = {'answer': x}
print(json.dumps(d))

这打印

{"answer": 42}

正如您在问题中推测的那样,您不能使用字符串插值,因为您插值的值可能包含引号。好观察!

编辑

您在评论中提到您有一个更大的对象。也许你想做这样的事情?

def create_json_body_for_value(value):
    return json.dumps([
        {
            "measurement": "cpu_load_short",
            "tags": {
                "host": "server01",
                "region": "us-west"
            },
            "time": "2009-11-10T23:00:00Z",
            "fields": {
                "value": value
            }
        }
    ])
于 2018-09-25T02:37:36.687 回答