首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在alembic中使用postgres排除约束

如何在alembic中使用postgres排除约束
EN

Stack Overflow用户
提问于 2015-02-16 19:02:05
回答 2查看 1.8K关注 0票数 8

是否有一种方法可以在Alembic中创建带有postgresql排除约束的表,而无需编写文字SQL?

例如,考虑一下这个表格:

代码语言:javascript
复制
CREATE TABLE reservation (
during tsrange,
EXCLUDE USING gist (during WITH &&)
);

排除约束似乎不在附件中可用的约束类型之列。

因为SQLAlchemy支持ExcludeConstraints

代码语言:javascript
复制
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似乎不认识它们,我想知道在我的模式修订历史中是否还有其他方法来反映这种排除约束。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-18 11:00:46

遇到了同样的问题。附件中的解决办法:

您需要在脚本顶部导入排除约束:

代码语言:javascript
复制
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','&&'))
                   )
票数 8
EN

Stack Overflow用户

发布于 2018-06-11 15:21:52

如果要用ExcludeConstraint更新现有表,则0.9版有create_exclude_constraint。参考资料:约束

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28548520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档