InfluxDB 数据库 HTTP API 数据写入与查询实战

InfluxDB 数据库阿木 发布于 11 天前 6 次阅读


InfluxDB 数据库:HTTP API 数据写入与查询实战

InfluxDB 是一款开源的时序数据库,专为处理时间序列数据而设计。它具有高性能、高可用性和易于扩展的特点,广泛应用于物联网、监控、分析等领域。本文将围绕 InfluxDB 的 HTTP API,介绍如何进行数据的写入与查询操作。

环境准备

在开始之前,请确保您已经安装了 InfluxDB。以下是安装步骤:

1. 下载 InfluxDB 安装包:[InfluxDB 官网](https://influxdata.com/downloads/)

2. 解压安装包

3. 启动 InfluxDB 服务

数据写入

InfluxDB 支持通过 HTTP API 进行数据的写入。以下是一个使用 Python 进行数据写入的示例:

python

import requests


import json

数据库连接信息


url = "http://localhost:8086/write"


token = "your_token"


org = "your_org"


bucket = "your_bucket"

数据写入


data = [


"cpu,region=us-west value=1.5 1633036800000",


"cpu,region=us-east value=2.0 1633036801000"


]

headers = {


"Content-Type": "text/plain",


"X-Influxdb-Write-Consistency": "one"


}

发送 POST 请求


response = requests.post(url, data="".join(data), headers=headers, auth=(token, org))

打印响应结果


print(response.text)


在上面的代码中,我们首先导入了 `requests` 和 `json` 库。然后,我们设置了数据库连接信息,包括 URL、token、org 和 bucket。接下来,我们定义了要写入的数据,这里使用了 InfluxDB 的线协议(Line Protocol)格式。我们使用 `requests.post` 方法发送 POST 请求,并将数据作为请求体发送。

数据查询

InfluxDB 也支持通过 HTTP API 进行数据的查询。以下是一个使用 Python 进行数据查询的示例:

python

import requests


import json

数据库连接信息


url = "http://localhost:8086/query"


token = "your_token"


org = "your_org"


bucket = "your_bucket"

查询语句


query = "SELECT FROM cpu"

headers = {


"Content-Type": "application/json",


"X-Influxdb-Write-Consistency": "one"


}

发送 POST 请求


response = requests.post(url, data=json.dumps({"query": query}), headers=headers, auth=(token, org))

打印响应结果


print(response.text)


在上面的代码中,我们首先导入了 `requests` 和 `json` 库。然后,我们设置了数据库连接信息,包括 URL、token、org 和 bucket。接下来,我们定义了查询语句,这里使用了 InfluxDB 的查询语言(InfluxQL)。我们使用 `requests.post` 方法发送 POST 请求,并将查询语句作为请求体发送。

数据读取

在 InfluxDB 中,数据以时间序列的形式存储。以下是一个使用 Python 读取数据的示例:

python

import requests


import json

数据库连接信息


url = "http://localhost:8086/query"


token = "your_token"


org = "your_org"


bucket = "your_bucket"

查询语句


query = "SELECT FROM cpu"

headers = {


"Content-Type": "application/json",


"X-Influxdb-Write-Consistency": "one"


}

发送 POST 请求


response = requests.post(url, data=json.dumps({"query": query}), headers=headers, auth=(token, org))

解析响应结果


results = response.json()

打印数据


for result in results["results"]:


for row in result["series"]:


print("Measurement:", row["name"])


print("Tags:", row["tags"])


print("Fields:", row["fields"])


print("Timestamps:", row["values"])


print("------")


在上面的代码中,我们首先导入了 `requests` 和 `json` 库。然后,我们设置了数据库连接信息,包括 URL、token、org 和 bucket。接下来,我们定义了查询语句,并使用 `requests.post` 方法发送 POST 请求。我们解析响应结果,并打印出测量值(Measurement)、标签(Tags)、字段(Fields)和时间戳(Timestamps)。

总结

本文介绍了 InfluxDB 的 HTTP API,包括数据的写入与查询操作。通过使用 Python 和 `requests` 库,我们可以轻松地与 InfluxDB 进行交互。在实际应用中,您可以根据自己的需求调整代码,实现更复杂的功能。

扩展阅读

1. [InfluxDB 官方文档](https://docs.influxdata.com/influxdb/v2.0/write/)

2. [InfluxDB 查询语言(InfluxQL)](https://docs.influxdata.com/influxdb/v2.0/query_language/)

3. [Python `requests` 库](https://docs.python-requests.org/en/master/)

希望本文能帮助您更好地了解 InfluxDB 的 HTTP API,并在实际项目中应用。