将带有多个标记的值写入XDB(使用python)

将带有多个标记的值写入XDB(使用python),python,influxdb,influxdb-python,Python,Influxdb,Influxdb Python,我正在使用(使用DataFrameClient)将值(浮动)以及两个标记(ID和时间戳)写入流入数据库 def write_to_influx(ID, value): df = pandas.DataFrame(data=[value],index=pandas.date_range(start=datetime.utcnow(), periods=1, freq='S'), columns=['value']) client.write_points(df, dataPoint

我正在使用(使用DataFrameClient)将值(浮动)以及两个标记(ID和时间戳)写入流入数据库

def write_to_influx(ID, value):
    df = pandas.DataFrame(data=[value],index=pandas.date_range(start=datetime.utcnow(), periods=1, freq='S'), columns=['value'])
    client.write_points(df, dataPointID, database="mydb")
在我的循环中,我连续多次写入同一个db,如下所示:

while True:

    value_1,value_2,value_3,value_4,value_5 = some_calculation(x,y,z)

    write_to_influx(value_1, ID_1)
    write_to_influx(value_2, ID_2)
    write_to_influx(value_3, ID_3)
    write_to_influx(value_4, ID_4)
    write_to_influx(value_5, ID_5)
我被告知可以将这些写请求批处理成一个,这将减少流入时的负载

我从另一个脚本中偷了
write\u to\u influx
方法,但实际上我在掌握这个方面有困难。文件上写着

write_points(points, time_precision=None, database=None, retention_policy=None, tags=None, batch_size=None, protocol=u'json', consistency=None)
参数: 点(字典列表,每个字典代表一个点)——要写入数据库的点列表

但是,使用
write\u to\u influx(value\u 1,ID\u 1)
,传递的不仅仅是一个字典,而是一个数据点ID

类似于已经应用的方法和docu描述……如果我想将多个值写入多个数据点ID,我应该传递字典列表和数据点ID列表吗?因为这似乎不起作用:

def write_values_to_influx(ID_list, value_list):

    indexes=pandas.date_range(start=datetime.utcnow().replace(tzinfo=pytz.UTC), periods=1, freq='S')

    dict_list=[]
    for value in value_list:
        df_new= pandas.DataFrame(data=[value],index=indexes)
        dict_list.append(df_new)

    client.write_points(dict_list, ID_list, database="mydb")
尽管如此:

value_1,value_2,value_3,value_4,value_5 = some_calculation(x,y,z)

ID_list=[ID_1,ID_2,ID_3,ID_4,ID_5]
value_list=[value_1,value_2,value_3,value_4,value_5]

write_values_to_influx(ID_list, value_list)
返回错误:

File "/vdp/base_functions.py", line 249, in write_values_to_influx
xyz@crVB    |     client.write_points(dict_list, ID_list, database="mydb")
xyz@crVB    |   File "/usr/lib/python3.6/site-packages/influxdb/_dataframe_client.py", line 123, in write_points
xyz@crVB    |     numeric_precision=numeric_precision)
xyz@crVB    |   File "/usr/lib/python3.6/site-packages/influxdb/_dataframe_client.py", line 282, in _convert_dataframe_to_lines
xyz@crVB    |     dataframe = dataframe.dropna(how='all').copy()
我的问题: 如何一次写入多个条目(到同一个数据库)?写入点是写入方法吗?还有DataFrameClient?

写入点(点、时间点、精度点、数据库点、保留点、策略点、标记点、批量点、协议点、一致性点)

参数:
点(字典列表,每个字典代表一个点)——要写入数据库的点列表

您使用的是正确的功能
客户端。请编写点
,只需发送数据点列表。

请使用

write_api.write(bucket=bucket, record=points)

在。

FYI中,有一个悬赏,现在,真的需要让这个工作:)问题需要困难,因为它需要设置一个XDB,对吗?不。什么是pd,ZWP?UpdateValue()返回了什么?那是从哪里来的。。。。这些问题从你的描述中是否清楚。抱歉,没有。当然不要在这里评论我的问题,但要制作更好的描述/代码,我可以将其复制粘贴到我的编辑器中。我重写了问题,感谢您的输入!请记住,流入需要您的点在一个特定的格式。例如。每个点都必须有一个“时间”字段。您必须为每个点创建一个有效的dict。之后,将该dict放入一个列表中,并将其传递给influx客户端提供的write_points方法。