【问题标题】:Inserting list as value in Influxdb在 Influxdb 中插入列表作为值
【发布时间】:2016-12-16 11:50:25
【问题描述】:

是否可以以某种方式将列表作为值插入 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'))

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

谢谢!

【问题讨论】:

    标签: python json influxdb influxdb-python


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        有两种方法可以做到这一点

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-12
          • 1970-01-01
          • 1970-01-01
          • 2014-08-09
          • 2021-08-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多