当前位置: 首页 > 面试题库 >

在Postgres上使用sqlalchemy创建部分唯一索引

祝宾白
2023-03-14
问题内容

SQLAlchemy支持在postgresql中创建部分索引。

是否可以通过SQLAlchemy创建部分 唯一
索引

像这样想象一个表/模型:

class ScheduledPayment(Base):
     invoice_id = Column(Integer)
     is_canceled = Column(Boolean, default=False)

我想要一个唯一的索引,对于给定的发票,该索引只能有一个“活动”的ScheduledPayment。

我可以在postgres中手动创建它:

CREATE UNIQUE INDEX only_one_active_invoice on scheduled_payment 
     (invoice_id, is_canceled) where not is_canceled;

我想知道如何使用SQLAlchemy 0.9将其添加到我的SQLAlchemy模型中。


问题答案:
class ScheduledPayment(Base):
    id = Column(Integer, primary_key=True)
    invoice_id = Column(Integer)
    is_canceled = Column(Boolean, default=False)

    __table_args__ = (
        Index('only_one_active_invoice', invoice_id, is_canceled,
              unique=True,
              postgresql_where=(~is_canceled)),
    )


 类似资料:
  • 问题内容: 不知道在PostgreSQL 9.3+中是否可行,但是我想在非唯一列上创建唯一索引。对于像这样的表: 我想仅能[快速]查询不同的日子。我知道我可以用来帮助执行不同的搜索,但是如果不同值的数量大大少于索引覆盖的行数,这似乎会增加额外的开销。就我而言,大约30天中有1天与众不同。 我是创建关系表以仅跟踪唯一条目的唯一选择吗?思维: 并在每次插入数据时使用触发器来更新它。 问题答案: 索引只

  • 问题内容: 我有一个CHAR(250)列用作varchar(24)列的外键。 在MySQL中,我记得我可以创建一个指定column(24)的索引,以便在最左边的24个字符上创建索引。在MS SQL Server上似乎无法实现。 我的问题是这样的: 是否可以在SQL Server 2008上使用索引视图为该列的子字符串建立索引,如果是,则它会对表的性能产生任何副作用吗? 问题答案: 您可以创建一个持

  • CreateIndexes 根据struct中的tag来创建索引 CreateUniques 根据struct中的tag来创建唯一索引

  • 我试图在我们的COSMOSDB上的一些集合上创建一个唯一的索引。每个MS文档https://docs.microsoft.com/en-us/azure/cosmos-db/mongoDB-indexing:只有当集合为空(不包含任何文档)时,才能创建唯一索引。 因此,我清理了集合上的所有数据,但遇到错误时,消息是: 你知道为什么我会出错吗? 谢谢,

  • Liquibase文件如下: 数据库更改日志: 我在启动spring boot应用程序时添加唯一约束时遇到以下错误 迁移更改集失败 /db/changelog/changes/1.create-account-balance-table.yml::1::roran:原因:liquibase.exception.数据库异常: ERROR:语法错误在或接近PARTITION位置: 93[失败SQL:(

  • 在文档中,我注意到hsqldb得到了:LOWER和LCASE内置函数,但这些函数对我都不起作用。 每次我都犯错误: 原因:LiquiBase.Exception.DatabaseException:意外标记:(必需:)[失败的SQL:在public.users上创建唯一索引public.lower_case_index(LOWER(name))] 我理想的解决方案应该是这样的: 但不管用。