使用 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 -install -relay--http write--read.[create db]