我希望使用vcenter
名称和uuid
的组合来唯一标识数据库中的主机。由于uuid可以在不同的vcenter
中重复,因此当我查找组合vcenter_name + host_uuid
是唯一的时,如何为主机表设计约束。
__tablename__ = 'host'
# key values
# pylint: disable=invalid-name
id = Column(Integer, primary_key=True)
hypervisor_type = Column(String, nullable=False)
uuid = Column(String, unique=True, nullable=False)
name = Column(String)
ip = Column(String)
fqdn = Column(String)
vcenter_id = Column(Integer, ForeignKey('vcenter.id', onupdate="CASCADE"))
vcenter = relationship('VcenterDBM', back_populates='hosts')
__table_args__ = (
UniqueConstraint('uuid', 'vcenter_id', name='uniq_hosts'),
)
以上约束我没有让我在db的同一vcenter
条目中添加多个主机。