SQLAlchemy:如何根据其后端有条件地选择列的类型
Posted
技术标签:
【中文标题】SQLAlchemy:如何根据其后端有条件地选择列的类型【英文标题】:SQLAlchemy: How to conditionally choose type for column by depending on its backend 【发布时间】:2013-02-16 05:44:19 【问题描述】:如果列使用 PostgreSQL 作为其后端,我想使用HSTORE
类型,否则使用PickleType
。问题是我们无法确定在定义模式时将使用哪个后端(在 Python 中)。当实际在后端数据库上创建表时,如何确定这一点并有条件地选择数据类型?
【问题讨论】:
【参考方案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
。
【讨论】:
以上是关于SQLAlchemy:如何根据其后端有条件地选择列的类型的主要内容,如果未能解决你的问题,请参考以下文章
Flask-SQLAlchemy:如何有条件地插入或更新一行