Community Python client for InfluxDB 3.0
Project description
InfluxDB 3.0 Python Client
Introduction
influxdb_client_3
is a Python module that provides a simple and convenient way to interact with InfluxDB 3.0. This module supports both writing data to InfluxDB and querying data using the Flight client, which allows you to execute SQL and InfluxQL queries on InfluxDB 3.0.
We offer a "Getting Started: InfluxDB 3.0 Python Client Library" video that goes over how to use the library and goes over the examples.
Dependencies
pyarrow
(automatically installed)pandas
(optional)
Installation
You can install 'influxdb3-python' using pip
:
pip install influxdb3-python
Note: This does not include Pandas support. If you would like to use key features such as to_pandas()
and write_file()
you will need to install pandas
separately.
Note: Please make sure you are using 3.6 or above. For the best performance use 3.11+
Usage
One of the easiest ways to get started is to checkout the "Pokemon Trainer Cookbook". This scenario takes you through the basics of both the client library and Pyarrow.
Importing the Module
from influxdb_client_3 import InfluxDBClient3, Point
Initialization
If you are using InfluxDB Cloud, then you should note that:
- You will need to supply your org id, this is not necessary for InfluxDB Dedicated.
- Use a bucketname for the database argument.
client = InfluxDBClient3(token="your-token",
host="your-host",
org="your-org",
database="your-database")
Writing Data
You can write data using the Point class, or supplying line protocol.
Using Points
point = Point("measurement").tag("location", "london").field("temperature", 42)
client.write(point)
Using Line Protocol
point = "measurement fieldname=0"
client.write(point)
Write from file
Users can import data from CSV, JSON, Feather, ORC, Parquet
import influxdb_client_3 as InfluxDBClient3
import pandas as pd
import numpy as np
from influxdb_client_3 import write_client_options, WritePrecision, WriteOptions, InfluxDBError
class BatchingCallback(object):
def success(self, conf, data: str):
print(f"Written batch: {conf}, data: {data}")
def error(self, conf, data: str, exception: InfluxDBError):
print(f"Cannot write batch: {conf}, data: {data} due: {exception}")
def retry(self, conf, data: str, exception: InfluxDBError):
print(f"Retryable error occurs for batch: {conf}, data: {data} retry: {exception}")
callback = BatchingCallback()
write_options = WriteOptions(batch_size=500,
flush_interval=10_000,
jitter_interval=2_000,
retry_interval=5_000,
max_retries=5,
max_retry_delay=30_000,
exponential_base=2)
wco = write_client_options(success_callback=callback.success,
error_callback=callback.error,
retry_callback=callback.retry,
write_options=write_options
)
with InfluxDBClient3.InfluxDBClient3(
token="INSERT_TOKEN",
host="eu-central-1-1.aws.cloud2.influxdata.com",
org="6a841c0c08328fb1",
database="python", write_client_options=wco) as client:
client.write_file(
file='./out.csv',
timestamp_column='time', tag_columns=["provider", "machineID"])
client.write_file(
file='./out.json',
timestamp_column='time', tag_columns=["provider", "machineID"], date_unit='ns' )
Pandas DF
client._write_api.write(bucket="pokemon-codex", record=pd_df, data_frame_measurement_name='caught', data_frame_tag_columns=['trainer', 'id', 'num'], data_frame_timestamp_column='timestamp')
Polars DF
client._write_api.write(bucket="pokemon-codex", record=pl_df, data_frame_measurement_name='caught', data_frame_tag_columns=['trainer', 'id', 'num'], data_frame_timestamp_column='timestamp')
Querying
Querying with SQL
query = "select * from measurement"
reader = client.query(query=query, language="sql")
table = reader.read_all()
print(table.to_pandas().to_markdown())
Querying with influxql
query = "select * from measurement"
reader = client.query(query=query, language="influxql")
table = reader.read_all()
print(table.to_pandas().to_markdown())
Windows Users
Currently, Windows users require an extra installation when querying via Flight natively. This is due to the fact gRPC cannot locate Windows root certificates. To work around this please follow these steps:
Install certifi
pip install certifi
Next include certifi within the flight client options:
import influxdb_client_3 as InfluxDBClient3
import pandas as pd
import numpy as np
from influxdb_client_3 import flight_client_options
import certifi
fh = open(certifi.where(), "r")
cert = fh.read()
fh.close()
client = InfluxDBClient3.InfluxDBClient3(
token="",
host="b0c7cce5-8dbc-428e-98c6-7f996fb96467.a.influxdb.io",
org="6a841c0c08328fb1",
database="flightdemo",
flight_client_options=flight_client_options(
tls_root_certs=cert))
table = client.query(
query="SELECT * FROM flight WHERE time > now() - 4h",
language="influxql")
print(table.to_pandas())
You may also include your own root certificate via this manor aswell.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file influxdb3_python-0.6.1.tar.gz
.
File metadata
- Download URL: influxdb3_python-0.6.1.tar.gz
- Upload date:
- Size: 60.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81624b47bdf18b2f6ef2054c7779f988c39f64e434b2c940089cac2342088a9e |
|
MD5 | 1cb03bdf4bf2861ce2cde96acb8771e5 |
|
BLAKE2b-256 | 824970e76e8b2cdacfb33b21c10d7eae0596afca58a70351d08b8576a5bb644f |
File details
Details for the file influxdb3_python-0.6.1-py3-none-any.whl
.
File metadata
- Download URL: influxdb3_python-0.6.1-py3-none-any.whl
- Upload date:
- Size: 73.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ecf277412b5a7c10765d472d75d8dcd90455de6b3756146d88f26bb52ecc07f5 |
|
MD5 | b559ecb6e1b1a0a29b6a21f3353d2cad |
|
BLAKE2b-256 | f60b0f212553e1170938b61af309cf5a98858dcf4d3702c3848d0a27f351f840 |