-
Notifications
You must be signed in to change notification settings - Fork 18
Open
Description
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:
influxdb3-python/influxdb_client_3/write_client/client/write/polars_dataframe_serializer.py
Lines 94 to 104 in 42620f3
| 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]] != "" | |
| ) |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels