SQLAlchemy:如何根据其后端有条件地选择列的类型

Posted

技术标签:

【中文标题】SQLAlchemy:如何根据其后端有条件地选择列的类型【英文标题】:SQLAlchemy: How to conditionally choose type for column by depending on its backend 【发布时间】:2013-02-16 05:44:19 【问题描述】:

如果列使用 PostgreSQL 作为其后端,我想使用HSTORE 类型,否则使用PickleType。问题是我们无法确定在定义模式时将使用哪个后端(在 Python 中)。当实际在后端数据库上创建表时,如何确定这一点并有条件地选择数据类型?

【问题讨论】:

【参考方案1】:

您可以使用TypeEngine.with_variant 完成类似的操作:

from sqlalchemy.types import PickleType
from sqlalchemy.dialects import postgresql

HybridType = PickleType()

HybridType = HybridType.with_variant(postgresql.HSTORE(), 'postgresql')

这将创建一个新类型 HybridType,您可以像使用任何其他类型一样使用它,但需要注意的是,它将在 Postgres 上生成 HSTORE 列,在其他任何地方生成 PickleType

【讨论】:

以上是关于SQLAlchemy:如何根据其后端有条件地选择列的类型的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 Diesel 的动态参数有条件地按列排序?

Flask-SQLAlchemy:如何有条件地插入或更新一行

如何根据 sqlalchemy 中的两列进行过滤

如何根据列表有条件地更新 Pandas 中的 DataFrame 列

使用 sqlalchemy 时如何选择特定列?

如何根据另一列有条件地聚合一列