Python 强制唯一约束SQLALchemy关系

Python 强制唯一约束SQLALchemy关系,python,sqlite,sqlalchemy,Python,Sqlite,Sqlalchemy,我有两个模型/表格,一个是项目,另一个是级别。一个项目可以有多个级别,但每个级别只能属于一个项目。标高必须有一个楼层(int),该楼层对于每个项目都必须是唯一的。换句话说,(project.project_id,level.floor)必须是唯一的。如何使用SQLAlchemy强制执行这种类型的约束 我已从2个模型中删除了所有不必要的字段: class Project(Base): __tablename__ = "project" project_id =

我有两个模型/表格,一个是项目,另一个是级别。一个项目可以有多个级别,但每个级别只能属于一个项目。标高必须有一个楼层(int),该楼层对于每个项目都必须是唯一的。换句话说,(project.project_id,level.floor)必须是唯一的。如何使用SQLAlchemy强制执行这种类型的约束

我已从2个模型中删除了所有不必要的字段:

class Project(Base):
    __tablename__ = "project"
    project_id = Column(Integer, primary_key=True)

class Level(Base):
    __tablename__ = "level"
    level_id = Column(Integer, primary_key=True)
    floor = Column(Integer)
    project_id = Column(Integer, ForeignKey("project.project_id"))
    project = relationship(
        "Project",
        backref="levels",  #! might see an error here (project does not exist)
        cascade="all, delete",
    )
    UniqueConstraint("project_id", "floor", name="project_level_floor")
更新:


这似乎是SQLite的问题,因为我在不同的应用程序中使用了完全相同的代码,该应用程序使用Postgres并强制执行此唯一约束。

不能在列中使用unique=True?因此我可以在任何列中放置unique,但我希望它们的组合是唯一的(所以复合键?)类主体中的
UniqueConstraint
本质上是一个no操作:,,它属于
\uuu table\u args\uuuu
。不能在列中使用unique=True?因此我可以在任何列中放置unique,但我希望它们的组合是唯一的(那么复合键呢?)类主体中的
UniqueConstraint
本质上是一个no操作:,,它属于
\uuu table\uu args\uuu