Ich möchte HSTORE
Typ für eine Spalte verwenden, wenn es PostgreSQL als Back-End verwendet, oder PickleType
andernfalls. Das Problem ist, dass wir nicht bestimmen können, welches Backend verwendet wird, wenn das Schema definiert wird (in Python). Wie kann ich dies bestimmen und bedingt den Datentyp auswählen, wenn die Tabelle tatsächlich in der Backend-Datenbank erstellt wird?SQLAlchemy: Wie Typ für Spalte abhängig von seinem Backend bedingt
6
A
Antwort
9
Sie können mit TypeEngine.with_variant
so etwas wie dies erreichen:
from sqlalchemy.types import PickleType
from sqlalchemy.dialects import postgresql
HybridType = PickleType()
HybridType = HybridType.with_variant(postgresql.HSTORE(), 'postgresql')
Dies schafft eine neue Art, HybridType
, die Sie wie jede andere Art verwenden können, mit dem Vorbehalt, dass es eine HSTORE
Spalte auf Postgres produzieren und a PickleType
überall sonst.