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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list