SQLAlchemy中超过2列的唯一主键

SQLAlchemy中超过2列的唯一主键,sqlalchemy,Sqlalchemy,使用SQLAlchemy,我对复合键(?)、uniqueconstraint、primarykeyconstraint等有点困惑。 如何创建一个在2列上唯一的类,并引用该唯一组合?假设每个用户的名称和电子邮件的组合是唯一的: class User(Base): __tablename__ = 'user' name = Column(String) email = Column(String) 我应该使用UniqueConstraint class User(Base)

使用SQLAlchemy,我对复合键(?)、uniqueconstraint、primarykeyconstraint等有点困惑。 如何创建一个在2列上唯一的类,并引用该唯一组合?假设每个
用户的
名称和
电子邮件的组合是唯一的:

class User(Base):
    __tablename__ = 'user'
    name = Column(String)
    email = Column(String)
我应该使用
UniqueConstraint

class User(Base):
    __tablename__ = 'user'
    name = Column(String)
    email = Column(String)
    __table_args__ = (UniqueConstraint(name, email), )

但是我如何引用另一个类中的特定用户呢?

谢谢您的反馈。事实证明,向每列添加一个
primary\u key=True
会自动创建一个复合主键,这意味着组合必须是唯一的,但每列不一定都是唯一的。因此,这就足够了:

class User(Base):
    __tablename__ = 'user'
    name = Column(String, primary_key=True)
    email = Column(String, primary_key=True)

这有用吗?只需在两个
列中设置
primary\u key=True
。这是使每个列本身唯一,还是仅使其组合唯一?后者是我要找的。这能回答你的问题吗?是的,它创建了一个复合主键——因此组合必须是唯一的,但是,例如,您可以在多个元组中使用相同的
名称。它相当于数据库模式中的
主键(名称、电子邮件)