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

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

【问题讨论】:

    标签: sqlalchemy relational-database portability sqldatatypes


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2021-04-03
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 2011-11-12
      相关资源
      最近更新 更多