使用签入sqlalchemy创建唯一约束

使用签入sqlalchemy创建唯一约束,sqlalchemy,flask-sqlalchemy,Sqlalchemy,Flask Sqlalchemy,请提示我,如何使用签入sqlalchemy创建唯一约束 我有一个具有唯一字段sku的表,但我不会从数据库中删除对象。我只是通过字段is_removed来标记它,因此当数据库中存在具有相同sku的对象但已删除DIS_removed=True时,我无法创建具有相同sku的新对象 我想通过签入sqlalchemy创建唯一约束,但我不知道如何创建 大概是这样的: class Model(db.Model): #but only when is_removed == False. How do w

请提示我,如何使用签入sqlalchemy创建唯一约束

我有一个具有唯一字段sku的表,但我不会从数据库中删除对象。我只是通过字段is_removed来标记它,因此当数据库中存在具有相同sku的对象但已删除DIS_removed=True时,我无法创建具有相同sku的新对象

我想通过签入sqlalchemy创建唯一约束,但我不知道如何创建

大概是这样的:

class Model(db.Model):
    #but only when is_removed == False. How do write this?
    __table_args__ = (UniqueConstraint('is_removed', 'sku',),) 
    id = db.Column(db.Integer, primary_key=True)
    sku = db.Column(db.String(100), nullable=False)
    is_removed = db.Column(db.Boolean, default=False)

据我所知,我认为您需要的是对id和sku的唯一约束。您可以通过创建一个具有以下伪代码的逻辑的计算列来解决这一问题:sku_unique=case在为True时被删除,然后“id:'+castid as varchar32 else sku end并在此列上具有唯一约束。