python - SQLAlchemy 列类型比较

标签 python sql sqlalchemy

我正在对不同的数据库类型进行大量的数据库自省(introspection),我希望能够比较两种列类型。例如,定义为 Boolean 的字段使用 declarative_base() 输入然后转换为特定的 TINYINT对于 MySQL 方言,所以检查如下:

model_a.__table__.columns['col'].type == model_b.__table__.columns['col'].type

行不通,这个也行:

(type_a == type_b) or issubclass(type_b, type_a)

如何比较数据类型“affinity”的两列? (通过检查代码,我看到列类型附加了一个 Comparator 类,但我不确定它是否有任何帮助以及如何使用它) 是否也可以在 SQLAlchemy 配置中强制列类型(通过避免方言特定的转换)?

最佳答案

(回答一个老问题,因为我一直在研究这个)。

最快的解决方案是比较类型的 str():

断言 str(type_a) == (type_b)

这适用于简单类型,但如果您有任何 Variant 类型或包装器(例如,MutableDict 包装 Postgres JSON)那么你将不得不处理一个特殊情况。

关于python - SQLAlchemy 列类型比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787794/

相关文章:

python - 我可以在 Python 的字符串格式 "language"中进行数学计算吗?

python - 将自定义主题/代码应用于 CKAN 扩展

sql - 有没有办法从本地 Azure Blob 存储批量插入?

sql - Flask-Admin 用户每行读/写设置

python - 错误 'str' 对象在 asyncpg 中没有属性 'toordinal'

python - 更新 SQLAlchemy 关系

python - 如何忽略存在空白值的行 Pandas Python

python - 从双引号包含的csv文件格式配置单元数据加载

mysql - MySQL 中是否有替代 CONCAT() 的方法?

c# - 多用户连接并同时进行 CRUD