使用 Influxdb 和 python 在 DB 上写入数据

Posted

技术标签:

【中文标题】使用 Influxdb 和 python 在 DB 上写入数据【英文标题】:Using Influx with python to write data on DB 【发布时间】:2017-05-26 07:03:00 【问题描述】:

我正在使用 influxdb 尝试使用 influxdb v4.0.0 在本地 influxdb 上写一些 'measurements'...

我有点困惑,因为有些地方说你使用 dict 或者你可以使用 json 和/或 line 协议....

从这里http://influxdb-python.readthedocs.io/en/latest/examples.html#tutorials-pandas 和从这里到这里https://github.com/influxdata/influxdb-python/blob/master/influxdb/client.py

1st - 创建数据库对象:

InfluxDBClient('localhost', database='DBNAME')

2nd - 用数据创建字典:

measurement = 
measurement['measurement'] = 'energy'
measurement['tags'] = 
measurement['fields'] = 
measurement['tags']['MeterID'] = str(meterId)
measurement['fields']['Energy_Wh'] = str(eFrame.getReading())

3rd - 将数据推送到 BD:

try:
    self.db.write(measurement)
except Exception as e:
    print e

程序可以运行,但没有数据存储在数据库中,而是我的控制台输出如下:

2017-01-11 12:41:09,741 - INFO - Saving Meter: MeterId = 09060178
u'points'
Meter-ID: 09060178 Energy Value (Wh): 10380300
'fields': 'Energy_Wh': '10380300', 'tags': 'MeterID': '09060178', 'measurement': 'energy'

1line logger file info
2line error/Exception
3line value returned by device
4line generated dict
(prints except logging are executed last)

我似乎找不到我写错的原因或内容以及u'points' 错误的含义...有人可以帮忙吗??

【问题讨论】:

【参考方案1】:

我建议使用Pinform 库,这是一个用于 InfluxDB 的 python ORM 来轻松获取时间戳、字段和标签。它使用正确的函数处理写入和读取。

【讨论】:

【参考方案2】:

你可以尝试如下方式(如examples所示):

from influxdb import InfluxDBClient

client = InfluxDBClient(host, port, user, password, dbname)

client.create_database(dbname)

 json_body = [
        
            "measurement": "cpu_load_short",
            "tags": 
                "host": "server01",
                "region": "us-west"
            ,
            "time": "2009-11-10T23:00:00Z",
            "fields": 
                "value": 0.64
            
        
    ]

client.write_points(json_body)

【讨论】:

我认为方法 db.write 存在问题 .... 我切换到 db.write_points 并且使用 dict 没有问题...我认为在函数 API 中它说在选项中接受DICT数据类型是JSON。 span>

以上是关于使用 Influxdb 和 python 在 DB 上写入数据的主要内容,如果未能解决你的问题,请参考以下文章

InfluxDB学习:基本概念和安装

influxdb -install -relay--http write--read.[create db]

influxdb基本操作

180727-时序数据库InfluxDB之备份和恢复策略

如何使用 influxdb-python 向 influxdb 发送正确的时间戳

将具有多个标签的值写入 influxDB(使用 python)