Python Flight 客户端
Apache Arrow Python 绑定 与 Python 脚本和应用程序集成,以查询存储在 InfluxDB 中的数据。
使用 InfluxDB 3 客户端库
我们建议使用 influxdb3-python
Python 客户端库,用于将 InfluxDB 3 与您的 Python 应用程序代码集成。
InfluxDB 3 客户端库 封装了 Apache Arrow Flight 客户端,并为 写入、查询 和处理存储在 InfluxDB 3 Core 中的数据提供了便捷的方法。客户端库可以使用 SQL 或 InfluxQL 进行查询。
以下示例展示了如何使用 pyarrow.flight
和 pandas
Python 模块来查询和格式化存储在 InfluxDB 3 Core 数据库中的数据
# Using pyarrow>=12.0.0 FlightClient
from pyarrow.flight import FlightClient, Ticket, FlightCallOptions
import json
import pandas
import tabulate
# Downsampling query groups data into 2-hour bins
sql="""
SELECT DATE_BIN(INTERVAL '2 hours', time) AS time,
room,
selector_max(temp, time)['value'] AS 'max temp',
selector_min(temp, time)['value'] AS 'min temp',
avg(temp) AS 'average temp'
FROM home
GROUP BY
1,
room
ORDER BY room, 1"""
flight_ticket = Ticket(json.dumps({
"namespace_name": "DATABASE_NAME",
"sql_query": sql,
"query_type": "sql"
}))
token = (b"authorization", bytes(f"Bearer DATABASE_TOKEN".encode('utf-8')))
options = FlightCallOptions(headers=[token])
client = FlightClient(f"grpc+tls://localhost:8181:443")
reader = client.do_get(flight_ticket, options)
arrow_table = reader.read_all()
# Use pyarrow and pandas to view and analyze data
data_frame = arrow_table.to_pandas()
print(data_frame.to_markdown())
# Using pyarrow>=12.0.0 FlightClient
from pyarrow.flight import FlightClient, Ticket, FlightCallOptions
import json
import pandas
import tabulate
# Downsampling query groups data into 2-hour bins
influxql="""
SELECT FIRST(temp)
FROM home
WHERE room = 'kitchen'
AND time >= now() - 100d
AND time <= now() - 10d
GROUP BY time(2h)"""
flight_ticket = Ticket(json.dumps({
"namespace_name": "DATABASE_NAME",
"sql_query": influxql,
"query_type": "influxql"
}))
token = (b"authorization", bytes(f"Bearer DATABASE_TOKEN".encode('utf-8')))
options = FlightCallOptions(headers=[token])
client = FlightClient(f"grpc+tls://localhost:8181:443")
reader = client.do_get(flight_ticket, options)
arrow_table = reader.read_all()
# Use pyarrow and pandas to view and analyze data
data_frame = arrow_table.to_pandas()
print(data_frame.to_markdown())
替换以下内容
DATABASE_NAME
:您的 InfluxDB 3 Core 数据库DATABASE_TOKEN
:具有足够权限访问指定数据库的数据库令牌
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 3 Core 和本文档的反馈和错误报告。要获取支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。