与SQLAlchemy在同一个表中的多对一关系
问题描述:
我有一个客户端的表,其中客户端可以是另一个客户端的子项。与SQLAlchemy在同一个表中的多对一关系
下面是表格定义。
[ClientID] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NOT NULL,
[VPFSID] [varchar](50) NOT NULL,
[Type] [varchar](25) NULL,
[ROHostID] [varchar](60) NOT NULL,
[RWHostID] [varchar](60) NOT NULL,
[ParentClientID] [int] NULL
在SQLAlchemy中,如何创建ParentClientID和ClientID之间的关系。我使用声明将这个类放在一起,但我不确定它是否有效。一个客户可以有很多孩子,但只能有一个父母,所以这是一个多对一的关系
class Client(Base):
""" Client Filesystems """
__tablename__ = 'Client'
client_id = Column('ClientID', int, primary_key=True, nullable=Flase)
name = Column('name', String(50), nullable=False)
vpfs_id = Column('VPFSID', String(50), nullable=False)
type = Column('Type',String(25))
ro_host_id = Column('ROHostID', String(60), ForeignKey('DataMover.HostID'), nullable=False)
rw_host_id = Column('RWHostID', String(60), ForeignKey('DataMover.HostID'), nullable=False)
rw_host = relation('Datamover',backref="rw_clients")
ro_host = relation('Datamover',backref="ro_clients")
parent_client_id = Column('ParentClientID',int,ForeignKey('Client.ClientID'))
parent = relation('Client',ForeignKey('Client.ClientID'))
有关完成此任何建议吗?
答
class Client(Base):
...<snip>...
parent = relation('Client', remote_side=[client_id])
的可能重复的[SQLAlchemy的 - 映射自引用作为一个关系到许多(声明的形式)](http://*.com/questions/2638217/sqlalchemy-mapping -self指涉关系-AS-一个一对多陈述性-FO) – 2011-04-13 14:02:42