2015-02-16 4 views
6

Gibt es eine Möglichkeit, eine Tabelle mit einem postgresql Ausschlussbedingungs in Alembic zu erstellen, ohne wörtlichen SQL zu schreiben?Wie mit Postgres Ausschluss Einschränkungen in alembic zu arbeiten

Betrachten Sie zum Beispiel diese Tabelle:

CREATE TABLE reservation (
during tsrange, 
EXCLUDE USING gist (during WITH &&) 
); 

Ausschluss Zwänge scheinen nicht unter den verfügbaren Constraint-Typen in alembic zu sein.

Als SQLAlchemy unterstützt ExcludeConstraints

from sqlalchemy.dialects.postgresql import ExcludeConstraint, TSRANGE 

class RoomBooking(Base): 

    __tablename__ = 'room_booking' 

    room = Column(Integer(), primary_key=True) 
    during = Column(TSRANGE()) 

    __table_args__ = (
     ExcludeConstraint(('room', '='), ('during', '&&')), 
    ) 

aber alembic scheint nicht, sie zu erkennen, ich frage mich, ob es andere Möglichkeiten, einen solchen Ausschluss Einschränkungen in meinem Schema Revision der Geschichte zu reflektieren.

Antwort

5

lief in das gleiche Problem. Die Lösung in der alembic:

Sie benötigen die Ausschluss Einschränkung für den Anfang des Skripts zu importieren:

from sqlalchemy.dialects.postgresql import ExcludeConstraint 

op.create_table('mission_event_schedule', 
        sa.Column('id', sa.Integer(), nullable=False), 
        sa.Column('ts_range', postgresql.TSTZRANGE(), nullable=True), 
        sa.PrimaryKeyConstraint('id'), 
        ExcludeConstraint(('ts_range','&&')) 
        ) 
Verwandte Themen