No worries! Thanks for your willingness to learn!
- Hmm I’m not sure. You can try setting
debug=True
when you instantiate the client like so:
client = InfluxDBClient(url="http://localhost:9999", token="my-token", org="my-org", debug=True)
- A timestamp is created at the time of insert.
- SOLUTION 1: THIS BLOG: Write millions of points from csv.
Write Millions of Points From CSV to InfluxDB with the 2.0 Python Client | InfluxData
SOLUTION 2: COMPOSE A DATAFRAME
You can also write an entire DataFrame to InfluxDB. This script creates a DataFrame with 2 rows, a datetime timestamp index, and one tag column “location”.
Write Pandas DataFrame
"""
_now = pd.Timestamp().now('UTC')
_data_frame = pd.DataFrame(data=[["coyote_creek", 1.0], ["coyote_creek", 2.0]],
index=[now, now + timedelta(hours=1)],
columns=["location", "water_level"])
_write_client.write(bucket.name, record=data_frame, data_frame_measurement_name='h2o_feet',
data_frame_tag_columns=['location'])
SOLUTION 3: CSV TO DATAFRAME TO INFLUX:
Here is an example of how to read a csv, convert it to a dataframe, and write the dataframe to InfluxDB.
Imagine your csv zoo_data.csv
has the following headers:
Animal_name, count, cost
You want Animal_name to be a tag and the rest to be fields.
You might use the following script to read the csv, convert it to a dataframe, add a timestamp column, set that timestamp column as an index and write the DataFrame to InfluxDBv2.
from influxdb_client import InfluxDBClient
import pandas as pd
mydata = pd.read_csv("~/Downloads/zoo_data.csv")
mydata.head()
print(mydata.size) #size of DataFrame is 250
# create an array of regularly. spaced timestamps and add it to the DataFrame as an index.
import datetime
t = pd.date_range(start='1/1/2020', end='05/01/2020', periods=1818)
s = pd.Series(t, name = 'TimeStamp')
mydata.insert(0, 'TimeStamp', s)
mydata = mydata.set_index('TimeStamp')
token = $mytoken
bucket = "demoBucket"
org = "hackathonDemoOrg"
from influxdb_client import InfluxDBClient, Point, WriteOptions
from influxdb_client.client.write_api import SYNCHRONOUS
client = InfluxDBClient(url="http://localhost:9999", token=token, org=org, debug=False)
write_client = client.write_api(write_options=SYNCHRONOUS)
write_client.write(bucket, record=mydata, data_frame_measurement_name='zoo-data',
data_frame_tag_columns=["Animal_name"])