如何从特定于供应商的数据类型中查找 SQLAlchemy 通用数据类型

How to find SQLAlchemy generic datatype from vendor-specific datatype

给定一个特定于供应商的 SQLAlchemy 数据类型,例如 sqlalchemy.dialects.postgresql.INTEGER,找到最适合该供应商特定类型的通用 SQLAlchemy 数据类型的最佳方法是什么?

例如,如果我有特定于供应商的类型 sqlalchemy.dialects.postgresql.INTEGER,我想映射回 sqlalchemy.sql.sqltypes.Integer

我知道在某些情况下这可能是不可能的,例如,如果数据库支持没有直接映射回 SA 通用数据类型的深奥类型。我主要只对直接映射回 SA 通用数据类型的数据类型感兴趣。

此功能已添加到 SQLAlchemy 1.4

https://github.com/sqlalchemy/sqlalchemy/pull/5714

示例:

from sqlalchemy.dialects.mssql import DATETIME2
mssql_type = DATETIME2()
print(type(mssql_type))  # <class 'sqlalchemy.dialects.mssql.base.DATETIME2'>
generic_type = mssql_type.as_generic()
print(type(generic_type))  # <class 'sqlalchemy.sql.sqltypes.DateTime'>