diff --git a/src/transformers/data_transformer.py b/src/transformers/data_transformer.py index dfc6294..3b10045 100644 --- a/src/transformers/data_transformer.py +++ b/src/transformers/data_transformer.py @@ -113,9 +113,20 @@ class DataTransformer: Returns: Measurement dictionary for this node with state, calc_err, and measurement fields """ + from decimal import Decimal + + # Helper to convert MySQL Decimal to float for JSON serialization + def convert_value(val): + if isinstance(val, Decimal): + return float(val) + elif isinstance(val, str): + return float(val) + else: + return val + measurement = { "state": mysql_row.get("State"), - "calc_err": mysql_row.get("calcerr", 0), + "calc_err": convert_value(mysql_row.get("calcerr", 0)), } # Create nested structure for measurement categories @@ -131,7 +142,7 @@ class DataTransformer: for mysql_col, (category, pg_key) in ELABDATADISP_FIELD_MAPPING.items(): value = mysql_row.get(mysql_col) if value is not None: - categories[category][pg_key] = float(value) if isinstance(value, str) else value + categories[category][pg_key] = convert_value(value) # Merge categories into measurement, keeping only non-empty categories for category, values in categories.items():