|
36 | 36 | from .type import ObjectArray, ObjectType |
37 | 37 |
|
38 | 38 | TYPES_MAP = { |
39 | | - "boolean": sqltypes.Boolean, |
40 | | - "short": sqltypes.SmallInteger, |
41 | | - "smallint": sqltypes.SmallInteger, |
| 39 | + "boolean": sqltypes.BOOLEAN, |
| 40 | + "short": sqltypes.SMALLINT, |
| 41 | + "smallint": sqltypes.SMALLINT, |
42 | 42 | "timestamp": sqltypes.TIMESTAMP, |
43 | 43 | "timestamp with time zone": sqltypes.TIMESTAMP, |
| 44 | + "timestamp without time zone": sqltypes.TIMESTAMP, |
44 | 45 | "object": ObjectType, |
45 | | - "integer": sqltypes.Integer, |
46 | | - "long": sqltypes.NUMERIC, |
47 | | - "bigint": sqltypes.NUMERIC, |
| 46 | + "object_array": ObjectArray, # TODO: Can this also be improved to use `sqltypes.ARRAY`? |
| 47 | + "integer": sqltypes.INTEGER, |
| 48 | + "long": sqltypes.BIGINT, |
| 49 | + "bigint": sqltypes.BIGINT, |
| 50 | + "float": sqltypes.FLOAT, |
48 | 51 | "double": sqltypes.DECIMAL, |
49 | 52 | "double precision": sqltypes.DECIMAL, |
50 | | - "object_array": ObjectArray, |
51 | | - "float": sqltypes.Float, |
52 | | - "real": sqltypes.Float, |
53 | | - "string": sqltypes.String, |
54 | | - "text": sqltypes.String |
| 53 | + "real": sqltypes.REAL, |
| 54 | + "string": sqltypes.VARCHAR, |
| 55 | + "text": sqltypes.VARCHAR, |
55 | 56 | } |
56 | 57 | try: |
57 | 58 | # SQLAlchemy >= 1.1 |
58 | 59 | from sqlalchemy.types import ARRAY |
59 | | - TYPES_MAP["integer_array"] = ARRAY(sqltypes.Integer) |
60 | | - TYPES_MAP["boolean_array"] = ARRAY(sqltypes.Boolean) |
61 | | - TYPES_MAP["short_array"] = ARRAY(sqltypes.SmallInteger) |
62 | | - TYPES_MAP["smallint_array"] = ARRAY(sqltypes.SmallInteger) |
| 60 | + TYPES_MAP["integer_array"] = ARRAY(sqltypes.INTEGER) |
| 61 | + TYPES_MAP["boolean_array"] = ARRAY(sqltypes.BOOLEAN) |
| 62 | + TYPES_MAP["short_array"] = ARRAY(sqltypes.SMALLINT) |
| 63 | + TYPES_MAP["smallint_array"] = ARRAY(sqltypes.SMALLINT) |
63 | 64 | TYPES_MAP["timestamp_array"] = ARRAY(sqltypes.TIMESTAMP) |
64 | 65 | TYPES_MAP["timestamp with time zone_array"] = ARRAY(sqltypes.TIMESTAMP) |
65 | | - TYPES_MAP["long_array"] = ARRAY(sqltypes.NUMERIC) |
66 | | - TYPES_MAP["bigint_array"] = ARRAY(sqltypes.NUMERIC) |
67 | | - TYPES_MAP["double_array"] = ARRAY(sqltypes.DECIMAL) |
68 | | - TYPES_MAP["double precision_array"] = ARRAY(sqltypes.DECIMAL) |
69 | | - TYPES_MAP["float_array"] = ARRAY(sqltypes.Float) |
70 | | - TYPES_MAP["real_array"] = ARRAY(sqltypes.Float) |
71 | | - TYPES_MAP["string_array"] = ARRAY(sqltypes.String) |
72 | | - TYPES_MAP["text_array"] = ARRAY(sqltypes.String) |
| 66 | + TYPES_MAP["timestamp without time zone_array"] = ARRAY(sqltypes.TIMESTAMP) |
| 67 | + TYPES_MAP["long_array"] = ARRAY(sqltypes.BIGINT) |
| 68 | + TYPES_MAP["bigint_array"] = ARRAY(sqltypes.BIGINT) |
| 69 | + TYPES_MAP["float_array"] = ARRAY(sqltypes.FLOAT) |
| 70 | + TYPES_MAP["real_array"] = ARRAY(sqltypes.REAL) |
| 71 | + TYPES_MAP["string_array"] = ARRAY(sqltypes.VARCHAR) |
| 72 | + TYPES_MAP["text_array"] = ARRAY(sqltypes.VARCHAR) |
| 73 | +except Exception: |
| 74 | + pass |
| 75 | +try: |
| 76 | + # SQLAlchemy >= 2.0 |
| 77 | + from sqlalchemy.types import DOUBLE, DOUBLE_PRECISION |
| 78 | + TYPES_MAP["real"] = DOUBLE |
| 79 | + TYPES_MAP["real_array"] = ARRAY(DOUBLE) |
| 80 | + TYPES_MAP["double"] = DOUBLE |
| 81 | + TYPES_MAP["double_array"] = ARRAY(DOUBLE) |
| 82 | + TYPES_MAP["double precision"] = DOUBLE_PRECISION |
| 83 | + TYPES_MAP["double precision_array"] = ARRAY(DOUBLE_PRECISION) |
73 | 84 | except Exception: |
74 | 85 | pass |
75 | 86 |
|
|
0 commit comments