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

min*_*hee 9 portability sqlalchemy relational-database sqldatatypes

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

Kur*_*hke 12

你可以用以下方法完成这样的事情TypeEngine.with_variant:

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

HybridType = PickleType()

HybridType = HybridType.with_variant(postgresql.HSTORE(), 'postgresql')
Run Code Online (Sandbox Code Playgroud)

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