Seems like field names aren't escaped using the polars dataframe serializer. Here's a short reproducer with influxdb3-python 0.18.0:
import polars as pl
from influxdb_client_3.write_client.client.write_api import PointSettings
from influxdb_client_3.write_client.client.write.polars_dataframe_serializer import (
PolarsDataframeSerializer,
)
df = pl.DataFrame(
[
pl.Series("with whitespace", [1], dtype=pl.Int64),
pl.Series("time", [0], dtype=pl.Datetime(time_unit="ns")),
]
)
print(
PolarsDataframeSerializer(
df,
PointSettings(),
data_frame_measurement_name="measurement",
data_frame_timestamp_column="time",
).serialize()[0]
)
Prints:
measurement with whitespace=1i 0
Expected
measurement with\ whitespace=1i 0
I think the relevant code should be here:
|
fields = ",".join( |
|
f"{col}=\"{self.escape_value(row[self.column_indices[col]])}\"" if isinstance(row[self.column_indices[col]], |
|
str) |
|
else f"{col}={str(row[self.column_indices[col]]).lower()}" if isinstance(row[self.column_indices[col]], |
|
bool) # Check for bool first |
|
else f"{col}={row[self.column_indices[col]]}i" if isinstance(row[self.column_indices[col]], int) |
|
else f"{col}={row[self.column_indices[col]]}" |
|
for col in self.column_indices |
|
if col not in self.tag_columns + [self.timestamp_column] and |
|
row[self.column_indices[col]] is not None and row[self.column_indices[col]] != "" |
|
) |
Seems like field names aren't escaped using the polars dataframe serializer. Here's a short reproducer with
influxdb3-python 0.18.0:Prints:
Expected
I think the relevant code should be here:
influxdb3-python/influxdb_client_3/write_client/client/write/polars_dataframe_serializer.py
Lines 94 to 104 in 42620f3