From 80eda60af62755f89254373c012bc6e4b666bad6 Mon Sep 17 00:00:00 2001 From: Dave Frame Date: Wed, 29 Nov 2023 19:56:00 -0700 Subject: [PATCH] add case for UUIDs and fix queryset bug --- bigquery_exporter/base.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bigquery_exporter/base.py b/bigquery_exporter/base.py index c8e2fea..505d6db 100644 --- a/bigquery_exporter/base.py +++ b/bigquery_exporter/base.py @@ -1,5 +1,6 @@ import datetime import logging +from uuid import UUID from google.cloud import bigquery from google.oauth2 import service_account from google.api_core.exceptions import GoogleAPICallError @@ -105,7 +106,7 @@ def export(self, pull_date=None, *args, **kwargs): if reporting_data: self._push_to_bigquery(reporting_data) logger.info( - f'Finished exporting {len(self.queryset)} {self.model} in {datetime.datetime.now() - pull_time}' + f'Finished exporting {len(queryset)} {self.model} in {datetime.datetime.now() - pull_time}' ) except Exception as e: logger.error(f'Error while exporting {self.model}: {e}') @@ -134,6 +135,8 @@ def _process_queryset(self, queryset, pull_time): # if the model is a datetime, sanitize to a BQ compliant string if isinstance(model_field, datetime.datetime): processed_dict[field] = model_field.strftime('%Y-%m-%d %H:%M:%S') + elif isinstance(model_field, UUID): + processed_dict[field] = str(model_field) else: processed_dict[field] = model_field processed_queryset.append(processed_dict)