是否有一种方法可以在Alembic中创建带有postgresql排除约束的表,而无需编写文字SQL?
例如,考虑一下这个表格:
CREATE TABLE reservation (
during tsrange,
EXCLUDE USING gist (during WITH &&)
);排除约束似乎不在附件中可用的约束类型之列。
因为SQLAlchemy支持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', '&&')),
)但是alembic似乎不认识它们,我想知道在我的模式修订历史中是否还有其他方法来反映这种排除约束。
发布于 2015-12-18 11:00:46
遇到了同样的问题。附件中的解决办法:
您需要在脚本顶部导入排除约束:
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','&&'))
)发布于 2018-06-11 15:21:52
如果要用ExcludeConstraint更新现有表,则0.9版有create_exclude_constraint。参考资料:约束
https://stackoverflow.com/questions/28548520
复制相似问题