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

时间:2013-03-01 16:42:27

标签: sqlalchemy relational-database portability sqldatatypes

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

1 个答案:

答案 0 :(得分:11)

您可以使用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列。