postgresql flask sqlalchemy+Postgres uniqueconstraint对多个列的约束被分别视为对每个列的唯一约束

8cdiaqws  于 2022-11-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(150)

我尝试在flask + sqlalchemy下用postgres作为db创建一个多列唯一键。它在tinysql上运行得很好,但不知何故postgres不太喜欢它,它为每列创建了一个唯一约束,而不是为所有列创建一个唯一约束......有什么办法可以解决这个问题吗?我应该为唯一约束添加另一个关键字还是索引?

class XYZ(sqla.Model)
    id = sqla.Column(sqla.Integer, primary_key=True, autoincrement=True)
    article_id = sqla.Column(sqla.Integer, sqla.ForeignKey('article.id'))
    story_id = sqla.Column(sqla.Integer, sqla.ForeignKey('story.id'))
    article_position = sqla.Column(sqla.Integer)
    __table_args__ = (
        sqla.UniqueConstraint('article_id', 'story_id', 'article_position', 
                              name='unique_article_story_pos'),
    )
qyzbxkaa

qyzbxkaa1#

我发现了一个令人惊讶的解决方案。我批量提交了大量的实体到数据库。为了测试的目的,我把我的提交移动到每个项目。问题解决了。但是为什么呢?为什么当我在TinySql数据库上运行同样的脚本时没有发生呢?

相关问题