SQLAlchemy中超过2列的唯一主键
使用SQLAlchemy,我对复合键(?)、uniqueconstraint、primarykeyconstraint等有点困惑。 如何创建一个在2列上唯一的类,并引用该唯一组合?假设每个SQLAlchemy中超过2列的唯一主键,sqlalchemy,Sqlalchemy,使用SQLAlchemy,我对复合键(?)、uniqueconstraint、primarykeyconstraint等有点困惑。 如何创建一个在2列上唯一的类,并引用该唯一组合?假设每个用户的名称和电子邮件的组合是唯一的: class User(Base): __tablename__ = 'user' name = Column(String) email = Column(String) 我应该使用UniqueConstraint class User(Base)
用户的名称和电子邮件的组合是唯一的:
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
。这是使每个列本身唯一,还是仅使其组合唯一?后者是我要找的。这能回答你的问题吗?是的,它创建了一个复合主键——因此组合必须是唯一的,但是,例如,您可以在多个元组中使用相同的名称。它相当于数据库模式中的主键(名称、电子邮件)
。