| 
36 | 36 | from .type import FloatVector, ObjectArray, ObjectType  | 
37 | 37 | 
 
  | 
38 | 38 | TYPES_MAP = {  | 
39 |  | -    "boolean": sqltypes.Boolean,  | 
40 |  | -    "short": sqltypes.SmallInteger,  | 
41 |  | -    "smallint": sqltypes.SmallInteger,  | 
42 |  | -    "timestamp": sqltypes.TIMESTAMP(timezone=False),  | 
43 |  | -    "timestamp with time zone": sqltypes.TIMESTAMP(timezone=True),  | 
 | 39 | +    "boolean": sqltypes.BOOLEAN,  | 
 | 40 | +    "short": sqltypes.SMALLINT,  | 
 | 41 | +    "smallint": sqltypes.SMALLINT,  | 
 | 42 | +    "timestamp": sqltypes.TIMESTAMP,  | 
 | 43 | +    "timestamp with time zone": sqltypes.TIMESTAMP(timezone=False),  | 
 | 44 | +    "timestamp without time zone": sqltypes.TIMESTAMP(timezone=True),  | 
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 |     "float_vector": FloatVector,  | 
56 | 57 | }  | 
 | 58 | + | 
57 | 59 | try:  | 
58 | 60 |     # SQLAlchemy >= 1.1  | 
59 | 61 |     from sqlalchemy.types import ARRAY  | 
60 |  | -    TYPES_MAP["integer_array"] = ARRAY(sqltypes.Integer)  | 
61 |  | -    TYPES_MAP["boolean_array"] = ARRAY(sqltypes.Boolean)  | 
62 |  | -    TYPES_MAP["short_array"] = ARRAY(sqltypes.SmallInteger)  | 
63 |  | -    TYPES_MAP["smallint_array"] = ARRAY(sqltypes.SmallInteger)  | 
 | 62 | +    TYPES_MAP["integer_array"] = ARRAY(sqltypes.INTEGER)  | 
 | 63 | +    TYPES_MAP["boolean_array"] = ARRAY(sqltypes.BOOLEAN)  | 
 | 64 | +    TYPES_MAP["short_array"] = ARRAY(sqltypes.SMALLINT)  | 
 | 65 | +    TYPES_MAP["smallint_array"] = ARRAY(sqltypes.SMALLINT)  | 
 | 66 | +    TYPES_MAP["timestamp_array"] = ARRAY(sqltypes.TIMESTAMP)  | 
64 | 67 |     TYPES_MAP["timestamp_array"] = ARRAY(sqltypes.TIMESTAMP(timezone=False))  | 
65 | 68 |     TYPES_MAP["timestamp with time zone_array"] = ARRAY(sqltypes.TIMESTAMP(timezone=True))  | 
66 |  | -    TYPES_MAP["long_array"] = ARRAY(sqltypes.NUMERIC)  | 
67 |  | -    TYPES_MAP["bigint_array"] = ARRAY(sqltypes.NUMERIC)  | 
68 |  | -    TYPES_MAP["double_array"] = ARRAY(sqltypes.DECIMAL)  | 
69 |  | -    TYPES_MAP["double precision_array"] = ARRAY(sqltypes.DECIMAL)  | 
70 |  | -    TYPES_MAP["float_array"] = ARRAY(sqltypes.Float)  | 
71 |  | -    TYPES_MAP["real_array"] = ARRAY(sqltypes.Float)  | 
72 |  | -    TYPES_MAP["string_array"] = ARRAY(sqltypes.String)  | 
73 |  | -    TYPES_MAP["text_array"] = ARRAY(sqltypes.String)  | 
 | 69 | +    TYPES_MAP["long_array"] = ARRAY(sqltypes.BIGINT)  | 
 | 70 | +    TYPES_MAP["bigint_array"] = ARRAY(sqltypes.BIGINT)  | 
 | 71 | +    TYPES_MAP["float_array"] = ARRAY(sqltypes.FLOAT)  | 
 | 72 | +    TYPES_MAP["real_array"] = ARRAY(sqltypes.REAL)  | 
 | 73 | +    TYPES_MAP["string_array"] = ARRAY(sqltypes.VARCHAR)  | 
 | 74 | +    TYPES_MAP["text_array"] = ARRAY(sqltypes.VARCHAR)  | 
 | 75 | +except Exception:  | 
 | 76 | +    pass  | 
 | 77 | + | 
 | 78 | +try:  | 
 | 79 | +    # SQLAlchemy >= 2.0  | 
 | 80 | +    from sqlalchemy.types import DOUBLE, DOUBLE_PRECISION  | 
 | 81 | +    TYPES_MAP["real"] = DOUBLE  | 
 | 82 | +    TYPES_MAP["real_array"] = ARRAY(DOUBLE)  | 
 | 83 | +    TYPES_MAP["double"] = DOUBLE  | 
 | 84 | +    TYPES_MAP["double_array"] = ARRAY(DOUBLE)  | 
 | 85 | +    TYPES_MAP["double precision"] = DOUBLE_PRECISION  | 
 | 86 | +    TYPES_MAP["double precision_array"] = ARRAY(DOUBLE_PRECISION)  | 
74 | 87 | except Exception:  | 
75 | 88 |     pass  | 
76 | 89 | 
 
  | 
 | 
0 commit comments