Skip to content

polars dataframe serializer missing field name escapes #201

@lemmi

Description

@lemmi

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]] != ""
)

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions