0

是否可以以某种方式在 InfluxDB 中插入列表作为值?这是json:

json_body = [
    {
        "measurement":"devices",
        "tags":{
            "host":"server01",
            "region":"us-west"

            },
        "fields": {


            "device":1234,
            "coord":[60.177751,24.913778],
            "local":[[244,5,'232E','F27B',23],[244,5,'232F','76FE',9]]


            }

        }
    ]

另一种方法是使用列表的字符串表示,但我必须将其转换为如下列表,这样可以正常工作。

ast.literal_eval(device_points[0]['local'])

这是带有字符串表示的 json 对象:

json_body = [
    {
        "measurement":"devices",
        "tags":{
            "host":"server01",
            "region":"us-west"

            },
        "fields": {


            "device":1234,
            "coord":"[60.177751,24.913778]",
            "local":"[[244,5,'232E','F27B',23],[244,5,'232F','76FE',9]]"


            }

        }
    ]

client.write_points(json_body)

query = 'select local from devices;'

print("Querying data: " + query)

result = client.query(query)

device_points = list(result.get_points(measurement='devices'))

有没有其他方法可以直接实现列表的写入?

谢谢!

4

3 回答 3

0

没有办法将列表存储为 InfluxDB 中的字段。一种常见的解决方法是将矢量分量拆分为单独的字段。

于 2016-12-16T16:50:40.903 回答
0

您可能可以将列表存储为字符串,但是之后您将无法操作它,因为 influxdb 在字符串操作方面相当差,并且缺乏从字符串中提取信息并将它们转换为字段的方法。

所以是的,如果您想坚持使用 influxdb,上述将其拆分为字段的建议可能是您的最佳选择。

于 2016-12-18T11:49:05.697 回答
0

有两种方法可以做到

  1. 将列表转换为字符串并将其存储为字段。在此方法中,列表中项目的相对顺序被保留,您可以稍后使用此字符串并取回原始列表

  2. 从列表中取出单个项目,从中创建一个标签集,并将这些点存储在流入中。这里的缺点是物品的顺序丢失了

于 2021-08-13T12:39:50.160 回答