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