From ebdc332a12aff99f194773ff531239b2b23c2eb3 Mon Sep 17 00:00:00 2001 From: Joshua Kifer Date: Fri, 30 Jul 2021 09:20:59 -0700 Subject: [PATCH 1/2] UUID type hint --- aurora_data_api/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/aurora_data_api/__init__.py b/aurora_data_api/__init__.py index 38f7061..4676a7d 100644 --- a/aurora_data_api/__init__.py +++ b/aurora_data_api/__init__.py @@ -28,6 +28,7 @@ DATETIME = datetime.datetime ROWID = str DECIMAL = Decimal +UUID = uuid.UUID ColumnDescription = namedtuple("ColumnDescription", "name type_code display_size internal_size precision scale null_ok") ColumnDescription.__new__.__defaults__ = (None,) * len(ColumnDescription._fields) @@ -133,7 +134,8 @@ class AuroraDataAPICursor: datetime.date: "DATE", datetime.time: "TIME", datetime.datetime: "TIMESTAMP", - Decimal: "DECIMAL" + Decimal: "DECIMAL", + UUID: "UUID" } def __init__(self, client=None, dbname=None, aurora_cluster_arn=None, secret_arn=None, transaction_id=None): From 602ee5c7fd013dc2879d7647efb963273b690877 Mon Sep 17 00:00:00 2001 From: Joshua Kifer Date: Fri, 30 Jul 2021 13:05:47 -0700 Subject: [PATCH 2/2] Render uuid's on result --- aurora_data_api/__init__.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/aurora_data_api/__init__.py b/aurora_data_api/__init__.py index 4676a7d..abf60ec 100644 --- a/aurora_data_api/__init__.py +++ b/aurora_data_api/__init__.py @@ -1,7 +1,8 @@ """ aurora-data-api - A Python DB-API 2.0 client for the AWS Aurora Serverless Data API """ -import os, datetime, ipaddress, uuid, time, random, string, logging, itertools, reprlib +import os, datetime, ipaddress, time, random, string, logging, itertools, reprlib +from uuid import UUID from decimal import Decimal from collections import namedtuple from .exceptions import (Warning, Error, InterfaceError, DatabaseError, DataError, OperationalError, IntegrityError, @@ -28,7 +29,6 @@ DATETIME = datetime.datetime ROWID = str DECIMAL = Decimal -UUID = uuid.UUID ColumnDescription = namedtuple("ColumnDescription", "name type_code display_size internal_size precision scale null_ok") ColumnDescription.__new__.__defaults__ = (None,) * len(ColumnDescription._fields) @@ -117,7 +117,7 @@ class AuroraDataAPICursor: "text": str, "time": datetime.time, "timestamp": datetime.datetime, - "uuid": uuid.uuid4, + "uuid": UUID, "numeric": Decimal, "decimal": Decimal } @@ -283,6 +283,8 @@ def _render_value(self, value, col_desc=None): if col_desc and col_desc.type_code in self._data_api_type_hint_map: if col_desc.type_code == Decimal: scalar_value = Decimal(scalar_value) + elif col_desc.type_code == UUID: + scalar_value = UUID(scalar_value) else: try: scalar_value = col_desc.type_code.fromisoformat(scalar_value)