in tools/hologres_excute_sql.py [0:0]
def _handle_csv(self, data: list[dict[str, Any]] | dict[str, Any] | None) -> Generator[ToolInvokeMessage]:
"""Generate CSV file message"""
output = StringIO()
# Write BOM (only first 3 bytes)
output.write('\ufeff') # Add BOM
writer = csv.writer(output)
# Write header
writer.writerow(data[0].keys())
# Write data rows (handle date serialization)
for row in data:
processed_row = [
self._custom_serializer(val) if isinstance(val, (date, datetime)) else val
for val in row.values()
]
writer.writerow(processed_row)
# Note: utf-8-sig encoding automatically includes BOM, recommended to use this method
yield self.create_blob_message(
output.getvalue().encode('utf-8-sig'), # Key modification point ✅
meta={
'mime_type': 'text/csv',
'filename': 'result.csv',
'encoding': 'utf-8-sig' # Explicitly declare encoding
}
)