使用外键为带有外键的表创建唯一索引

Stu*_*Cat 1 python sqlite orm peewee

假设我有一个名为TBL_ACCOUNT的表,其中包含我的所有用户,还有一个名为TBL_EMAIL_SUBSCRIPTION的表,其中包含用户已订阅的提要。我正在尝试使其每个用户+ feed组合中只有一个条目,因此user1只能订阅一次feed1,但是user1可以同时订阅feed1和feed2。

这是我的模型的样子:

class TBL_ACCOUNT(BaseModel):
    USERNAME = CharField(unique=True)
    PASSWORD = CharField()
    EMAIL = CharField(unique=True)

class TBL_EMAIL_SUBSCRIPTION(BaseModel):
    USER = ForeignKeyField(TBL_ACCOUNT)
    FEED = CharField()

    class Meta:
        indexes = (("USER_id", "FEED", True))
Run Code Online (Sandbox Code Playgroud)

我也尝试过仅使用“ USER”作为索引,但是由于数据库仍然收到重复项,因此无法解决。

小智 6

请参考peewee文档:http ://docs.peewee-orm.com/zh-CN/latest/peewee/models.html#indexes-and-constraints
在您的情况下,它应如下所示:

class Meta:
    indexes = (
        (("USER_id", "FEED"), True),
    )
Run Code Online (Sandbox Code Playgroud)

注意使用逗号!它们非常重要,因为索引是元组的元组。