Changeset: 7d82fa34c0f4 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7d82fa34c0f4 Modified Files: clients/python2/monetdb/sql/pythonize.py clients/python2/monetdb/sql/types.py clients/python3/monetdb/sql/pythonize.py clients/python3/monetdb/sql/types.py Branch: iot Log Message:
Added python mapi driver support for JSON and UUID types diffs (170 lines): diff --git a/clients/python2/monetdb/sql/pythonize.py b/clients/python2/monetdb/sql/pythonize.py --- a/clients/python2/monetdb/sql/pythonize.py +++ b/clients/python2/monetdb/sql/pythonize.py @@ -27,6 +27,7 @@ def _extract_timezone(data): return data[:-6], datetime.timedelta(hours=sign * int(data[-5:-3]), minutes=sign * int(data[-2:])) + def strip(data): """ returns a python string, with chopped off quotes, and replaced escape characters""" @@ -71,6 +72,7 @@ def py_timestamp(data): else: return datetime.datetime.strptime(data, '%Y-%m-%d %H:%M:%S') + def py_timestamptz(data): """ Returns a python Timestamp where data contains a tz code """ @@ -86,31 +88,33 @@ mapping = { types.VARCHAR: strip, types.CLOB: strip, types.BLOB: str, - types.DECIMAL: Decimal, + types.WRD: int, + types.SERIAL: int, + types.TINYINT: int, types.SMALLINT: int, + types.SHORTINT: int, + types.MEDIUMINT: int, types.INT: int, - types.WRD: int, + types.LONGINT: int, types.BIGINT: int, types.HUGEINT: int, - types.SERIAL: int, types.REAL: float, + types.FLOAT: float, types.DOUBLE: float, + types.DECIMAL: Decimal, types.BOOLEAN: py_bool, types.DATE: py_date, types.TIME: py_time, + types.TIMETZ: py_timetz, types.TIMESTAMP: py_timestamp, types.TIMESTAMPTZ: py_timestamptz, - types.TIMETZ: py_timetz, types.INTERVAL: strip, types.MONTH_INTERVAL: strip, types.SEC_INTERVAL: strip, - types.TINYINT: int, - types.SHORTINT: int, - types.MEDIUMINT: int, - types.LONGINT: int, - types.FLOAT: float, types.URL: strip, types.INET: str, + types.UUID: strip, + types.JSON: strip } diff --git a/clients/python2/monetdb/sql/types.py b/clients/python2/monetdb/sql/types.py --- a/clients/python2/monetdb/sql/types.py +++ b/clients/python2/monetdb/sql/types.py @@ -34,6 +34,8 @@ TINYINT = 'tinyint' URL = 'url' INET = 'inet' +UUID = 'uuid' +JSON = 'json' # Not on the website: SHORTINT = 'shortint' @@ -47,7 +49,9 @@ TIMETZ = 'timetz' # full names and aliases, spaces are replaced with underscores CHARACTER = CHAR CHARACTER_VARYING = VARCHAR -CHARACHTER_LARGE_OBJECT = CLOB +CHARACTER_LARGE_OBJECT = CLOB BINARY_LARGE_OBJECT = BLOB NUMERIC = DECIMAL DOUBLE_PRECISION = DOUBLE +BOOL = BOOLEAN +INTEGER = INT diff --git a/clients/python3/monetdb/sql/pythonize.py b/clients/python3/monetdb/sql/pythonize.py --- a/clients/python3/monetdb/sql/pythonize.py +++ b/clients/python3/monetdb/sql/pythonize.py @@ -28,6 +28,7 @@ def _extract_timezone(data): return data[:-6], datetime.timedelta(hours=sign * int(data[-5:-3]), minutes=sign * int(data[-2:])) + def strip(data): """ returns a python string, with chopped off quotes, and replaced escape characters""" @@ -75,6 +76,7 @@ def py_timestamp(data): else: return datetime.datetime.strptime(data, '%Y-%m-%d %H:%M:%S') + def py_timestamptz(data): """ Returns a python Timestamp where data contains a tz code """ @@ -90,31 +92,33 @@ mapping = { types.VARCHAR: strip, types.CLOB: strip, types.BLOB: str, - types.DECIMAL: Decimal, + types.WRD: int, + types.SERIAL: int, + types.TINYINT: int, types.SMALLINT: int, + types.SHORTINT: int, + types.MEDIUMINT: int, types.INT: int, - types.WRD: int, + types.LONGINT: int, types.BIGINT: int, types.HUGEINT: int, - types.SERIAL: int, types.REAL: float, + types.FLOAT: float, types.DOUBLE: float, + types.DECIMAL: Decimal, types.BOOLEAN: py_bool, types.DATE: py_date, types.TIME: py_time, + types.TIMETZ: py_timetz, types.TIMESTAMP: py_timestamp, types.TIMESTAMPTZ: py_timestamptz, - types.TIMETZ: py_timetz, types.INTERVAL: strip, types.MONTH_INTERVAL: strip, types.SEC_INTERVAL: strip, - types.TINYINT: int, - types.SHORTINT: int, - types.MEDIUMINT: int, - types.LONGINT: int, - types.FLOAT: float, types.URL: strip, types.INET: str, + types.UUID: strip, + types.JSON: strip } diff --git a/clients/python3/monetdb/sql/types.py b/clients/python3/monetdb/sql/types.py --- a/clients/python3/monetdb/sql/types.py +++ b/clients/python3/monetdb/sql/types.py @@ -34,6 +34,8 @@ TINYINT = 'tinyint' URL = 'url' INET = 'inet' +UUID = 'uuid' +JSON = 'json' # Not on the website: SHORTINT = 'shortint' @@ -47,7 +49,9 @@ TIMETZ = 'timetz' # full names and aliases, spaces are replaced with underscores CHARACTER = CHAR CHARACTER_VARYING = VARCHAR -CHARACHTER_LARGE_OBJECT = CLOB +CHARACTER_LARGE_OBJECT = CLOB BINARY_LARGE_OBJECT = BLOB NUMERIC = DECIMAL DOUBLE_PRECISION = DOUBLE +BOOL = BOOLEAN +INTEGER = INT _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list