Skip to content

Commit 4c56987

Browse files
Merge pull request #33 from InfluxCommunity/blog-examples
fixed error handling
2 parents 06e179c + ba38c8c commit 4c56987

File tree

2 files changed

+110
-16
lines changed

2 files changed

+110
-16
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
from influxdb_client_3 import InfluxDBClient3, Point, SYNCHRONOUS, write_client_options, InfluxDBError
2+
import pandas as pd
3+
import numpy as np
4+
import datetime
5+
6+
7+
8+
wco = write_client_options(write_options=SYNCHRONOUS)
9+
10+
11+
with InfluxDBClient3(
12+
token="",
13+
host="eu-central-1-1.aws.cloud2.influxdata.com",
14+
org="6a841c0c08328fb1",
15+
database="pokemon-codex", write_client_options=wco) as client:
16+
17+
now = datetime.datetime.now(datetime.timezone.utc)
18+
19+
data = Point("caught").tag("trainer", "ash").tag("id", "0006").tag("num", "1")\
20+
.field("caught", "charizard")\
21+
.field("level", 10).field("attack", 30)\
22+
.field("defense", 40).field("hp", 200)\
23+
.field("speed", 10)\
24+
.field("type1", "fire").field("type2", "flying")\
25+
.time(now)
26+
27+
28+
29+
30+
data = []
31+
# Adding first point
32+
data.append(
33+
Point("caught")
34+
.tag("trainer", "ash")
35+
.tag("id", "0006")
36+
.tag("num", "1")
37+
.field("caught", "charizard")
38+
.field("level", 10)
39+
.field("attack", 30)
40+
.field("defense", 40)
41+
.field("hp", 200)
42+
.field("speed", 10)
43+
.field("type1", "fire")
44+
.field("type2", "flying")
45+
.time(now)
46+
)
47+
48+
49+
50+
# Bad point
51+
data.append(
52+
Point("caught")
53+
.tag("trainer", "ash")
54+
.tag("id", "0008")
55+
.tag("num", "3")
56+
.field("caught", "squirtle")
57+
.field("level", 13)
58+
.field("attack", 29)
59+
.field("defense", 40)
60+
.field("hp", 180)
61+
.field("speed", 13)
62+
.field("type1", "water")
63+
.field("type2", None)
64+
.time(now)
65+
)
66+
67+
try:
68+
client.write(data)
69+
except Exception as e:
70+
print(f"Error writing point")
71+
72+
# Good Query
73+
try:
74+
table = client.query(query='''SELECT * FROM "caught" WHERE time > now() - 5m''', language='influxql')
75+
print(table)
76+
except Exception as e:
77+
print(f"Error querying data: {e}")
78+
79+
# Bad Query - not a sql query
80+
try:
81+
table = client.query(query='''SELECT * FROM "caught" WHERE time > now() - 5m''', language='sql')
82+
print(table)
83+
except Exception as e:
84+
print(f"Error querying data: {e}")
85+
86+
87+
88+
89+

influxdb_client_3/__init__.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def __init__(
5757
org=self._org,
5858
**kwargs)
5959

60-
self._write_api = _WriteApi(self._client, **self._write_client_options)
60+
self._write_api = _WriteApi(influxdb_client=self._client, **self._write_client_options)
6161
self._flight_client_options = flight_client_options or {}
6262
self._flight_client = FlightClient(f"grpc+tls://{host}:443", **self._flight_client_options)
6363

@@ -75,7 +75,8 @@ def write(self, record=None, **kwargs):
7575
try:
7676
self._write_api.write(bucket=self._database, record=record, **kwargs)
7777
except InfluxDBError as e:
78-
print(f"InfluxDB Error: {e}")
78+
raise e
79+
7980

8081
def write_file(self, file, measurement_name=None, tag_columns=None, timestamp_column='time', **kwargs):
8182
"""
@@ -96,7 +97,8 @@ def write_file(self, file, measurement_name=None, tag_columns=None, timestamp_co
9697
df = table.to_pandas() if isinstance(table, pa.Table) else table
9798
self._process_dataframe(df, measurement_name, tag_columns or [], timestamp_column)
9899
except Exception as e:
99-
print(f"Error writing file: {e}")
100+
raise e
101+
100102

101103
def _process_dataframe(self, df, measurement_name, tag_columns, timestamp_column):
102104
# This function is factored out for clarity.
@@ -133,19 +135,22 @@ def query(self, query, language="sql", mode="all"):
133135
:type mode: str
134136
:return: The queried data.
135137
"""
136-
ticket_data = {"database": self._database, "sql_query": query, "query_type": language}
137-
ticket = Ticket(json.dumps(ticket_data).encode('utf-8'))
138-
flight_reader = self._flight_client.do_get(ticket, self._options)
139-
140-
mode_func = {
141-
"all": flight_reader.read_all,
142-
"pandas": flight_reader.read_pandas,
143-
"chunk": lambda: flight_reader,
144-
"reader": flight_reader.to_reader,
145-
"schema": lambda: flight_reader.schema
146-
}.get(mode, flight_reader.read_all)
147-
148-
return mode_func() if callable(mode_func) else mode_func
138+
try:
139+
ticket_data = {"database": self._database, "sql_query": query, "query_type": language}
140+
ticket = Ticket(json.dumps(ticket_data).encode('utf-8'))
141+
flight_reader = self._flight_client.do_get(ticket, self._options)
142+
143+
mode_func = {
144+
"all": flight_reader.read_all,
145+
"pandas": flight_reader.read_pandas,
146+
"chunk": lambda: flight_reader,
147+
"reader": flight_reader.to_reader,
148+
"schema": lambda: flight_reader.schema
149+
}.get(mode, flight_reader.read_all)
150+
151+
return mode_func() if callable(mode_func) else mode_func
152+
except Exception as e:
153+
raise e
149154

150155
def close(self):
151156
"""Close the client and clean up resources."""

0 commit comments

Comments
 (0)