Python Flight SQL DBAPI 客户端
该 Python flightsql-dbapi Flight SQL DBAPI 库 使用 SQL 与 Python 应用程序集成,以查询存储在 InfluxDB 3 Core 数据库中的数据。flightsql-dbapi 库使用 Flight SQL 协议来查询和检索数据。
使用 InfluxDB 3 客户端库
我们建议使用 influxdb3-python Python 客户端库 来将 InfluxDB 3 与您的 Python 应用程序代码集成。
InfluxDB 3 客户端库封装了 Apache Arrow Flight 客户端,并提供了用于 写入、查询 和处理存储在 InfluxDB 3 Core 中的数据的便捷方法。客户端库可以使用 SQL 或 InfluxQL 进行查询。
安装
适用于 Python 的 flightsql-dbapi Flight SQL 库提供了 DB API 2 接口和 SQLAlchemy 方言,用于 Flight SQL。安装 flightsql-dbapi 还会安装您将用于处理 Arrow 数据的 pyarrow 库。
在您的终端中,使用 pip 安装 flightsql-dbapi
pip install flightsql-dbapi导入模块
flightsql-dbapi 包提供了 flightsql 模块。从该模块导入 FlightSQLClient 类方法
from flightsql import FlightSQLClientflightsql.FlightSQLClient类:用于 初始化客户端和与 Flight SQL 服务器交互的接口。
API 参考
类 FlightSQLClient
提供了用于 初始化客户端和与 Flight SQL 服务器交互的接口。
语法
__init__(self, host=None, token=None, metadata=None, features=None)初始化并返回一个 FlightSQLClient 实例,用于与服务器交互。
初始化客户端
以下示例展示了如何使用 Python、flightsql-dbapi 和 *DB API 2* 接口来实例化一个为 InfluxDB 数据库配置的 Flight SQL 客户端。
from flightsql import FlightSQLClient
# Instantiate a FlightSQLClient configured for a database
client = FlightSQLClient(host='localhost:8181',
token='DATABASE_TOKEN',
metadata={'database': 'DATABASE_NAME'},
features={'metadata-reflection': 'true'})替换以下内容:
实例方法
FlightSQLClient.execute
发送 Flight SQL RPC 请求以执行指定的 SQL 查询。
语法
execute(query: str, call_options: Optional[FlightSQLCallOptions] = None)示例
# Execute the query
info = client.execute("SELECT * FROM home")响应包含一个 flight.FlightInfo 对象,该对象包含元数据和一个 endpoints: [...] 列表。每个端点都包含以下内容:
- 一个地址列表,您可以在其中检索查询结果数据。
- 一个
ticket值,用于标识要 检索 的数据。
FlightSQLClient.do_get
传入 Flight ticket(从 FlightSQLClient.execute 响应中获取),并检索由 ticket 标识的 Arrow 数据。返回一个 pyarrow.flight.FlightStreamReader,用于流式传输数据。
语法
do_get(ticket, call_options: Optional[FlightSQLCallOptions] = None)示例
以下示例展示了如何使用 Python、flightsql-dbapi 和 pyarrow 查询 InfluxDB 并检索数据。
from flightsql import FlightSQLClient
# Instantiate a FlightSQLClient configured for a database
client = FlightSQLClient(host='localhost:8181',
token='DATABASE_TOKEN',
metadata={'database': 'DATABASE_NAME'},
features={'metadata-reflection': 'true'})
# Execute the query to retrieve FlightInfo
info = client.execute("SELECT * FROM home")
# Extract the token for retrieving data
ticket = info.endpoints[0].ticket
# Use the ticket to request the Arrow data stream.
# Return a FlightStreamReader for streaming the results.
reader = client.do_get(ticket)
# Read all data to a pyarrow.Table
table = reader.read_all()
print(table)do_get(ticket) 返回一个 pyarrow.flight.FlightStreamReader,用于流式传输 Arrow 记录批次。
要从流中读取数据,请调用以下 FlightStreamReader 方法之一:
read_all():将所有记录批次读取为pyarrow.Table。read_chunk():读取下一个记录批次和元数据。read_pandas():读取所有记录批次并将它们转换为pandas.DataFrame。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。