ITPub博客

首页 > 数据库 > > python操作InfluxDB附录InfluxDB注意坑集合

python操作InfluxDB附录InfluxDB注意坑集合

作者:飘絮絮絮丶 时间:2022-02-07 10:22:12 0 删除 编辑

前言

InfluxDB是一个优秀的时序数据库,是最近几年物联网发展下业务需求下诞生的一款tsdb。据某云,某排行榜都有它的身影。
虽然他是go写的,我们就用python来实现下操作(因为我有个别的功能用python比较方便),操作非常简单。

大道至简 越简单的越易维护

模块安装

pip install influxdb

使用

from influxdb import InfluxDBClient

class DbHelper:
    """docstring for DbHelper"""
    def __init__(self):
        self.client = InfluxDBClient('you influxdb server', 8086, 'your username', 'your password', 'your datebases') # 连接数据库

注意点

  • 时区问题 之 写入
    influxdb·默认采用utc时间为标准 所以写入的时候如果显示指定时间 需要转为utc时间
    current_time_utc = datetime.datetime.utcnow().isoformat("T")    
    w_json = [{
            "measurement": 'iot_data',
            "time": current_time_utc, #注意这里可以显式指定 也可以不写  如果写了就用utc时间
            "tags": {
                'senderid': '111111',
                'sensorid': '100000',
                'supplierid':'2020',
            },
            "fields": {
                'raw': jsonraw,
            }
        }]
    res=self.client.write_points(w_json)

对应关系数据库 ,measurement就是表,tags就是索引列,fields就是内容列。 那他还有个牛掰的地方就是和mongodb一样,可以不预定义列。开发起来是不是很溜?

  • 时区问题 之 查询

SELECT * FROM "iot_data" WHERE time >='2020-04-03 17:59:39'
SELECT * FROM "iot_data" WHERE time >='2020-04-03 17:59:39' tz('Asia/Shanghai')

这两个查询 一个是把输入时间字符串当成utc时间 来查询; 一个是当成我们东八区的、我们最熟悉的时间来查询。

  • influxdb之update
    除了insert select delete ,这些和传统关系型数据库差不多。。
    update也很简单 用覆盖某个时间戳的insert就行。

insert xx_measurement名,longitude=120.33,latitude=23.33 temperature=22 154080088649461462



作者:小小吧主
链接:https://www.jianshu.com/p/7a634477bf59
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3124840/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-09-09

  • 博文量
    2646
  • 访问量
    42264