SQLAlchemy: How to conditionally choose type for column by depending on its backend

依然范特西╮ 提交于 2019-12-05 19:02:03

问题


I want to use HSTORE type for a column if it uses PostgreSQL as its backend, or PickleType otherwise. The problem is that we cannot determine which backend will be used when schema is being defined (in Python). How can I determine this and conditionally choose the data type when the table actually is created on the backend database?


回答1:


You can accomplish something like this with TypeEngine.with_variant:

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

HybridType = PickleType()

HybridType = HybridType.with_variant(postgresql.HSTORE(), 'postgresql')

This creates a new type, HybridType, which you can use like any other type, with the caveat that it will produce an HSTORE column on Postgres and a PickleType everywhere else.



来源:https://stackoverflow.com/questions/15162559/sqlalchemy-how-to-conditionally-choose-type-for-column-by-depending-on-its-back

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!