2013-03-01 11 views
6

PostgreSQLをバックエンドとして使用する場合は、HSTORE型を使用します。そうでない場合はPickleTypeです。問題は、スキーマが(Pythonで)定義されているときにどのバックエンドが使用されるかを判断できないことです。これを判別し、テーブルが実際にバックエンドデータベースに作成されたときに条件付きでデータタイプを選択するにはどうすればよいですか?SQLAlchemy:バックエンドに応じて列の型を条件付きで選択する方法

答えて

9

あなたはTypeEngine.with_variantでこのような何かを達成することができます

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

HybridType = PickleType() 

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

をこれは、あなたがそれをPostgresの上HSTORE列を生成することを警告して、他のタイプと同様に使用できる新しいタイプ、HybridTypeを作成し、他のすべてのPickleType

関連する問題