【发布时间】:2013-02-16 05:44:19
【问题描述】:
如果列使用 PostgreSQL 作为其后端,我想使用HSTORE 类型,否则使用PickleType。问题是我们无法确定在定义模式时将使用哪个后端(在 Python 中)。当实际在后端数据库上创建表时,如何确定这一点并有条件地选择数据类型?
【问题讨论】:
标签: sqlalchemy relational-database portability sqldatatypes
如果列使用 PostgreSQL 作为其后端,我想使用HSTORE 类型,否则使用PickleType。问题是我们无法确定在定义模式时将使用哪个后端(在 Python 中)。当实际在后端数据库上创建表时,如何确定这一点并有条件地选择数据类型?
【问题讨论】:
标签: sqlalchemy relational-database portability sqldatatypes
您可以使用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。
【讨论】: