2011-04-13 88 views
2

我有一個客戶端的表,其中客戶端可以是另一個客戶端的子項。與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')) 

有關完成此任何建議嗎?

+3

的可能重複的[SQLAlchemy的 - 映射自引用作爲一個關係到許多(聲明的形式)](http://stackoverflow.com/questions/2638217/sqlalchemy-mapping -self指涉關係-AS-一個一對多陳述性-FO) – 2011-04-13 14:02:42

回答

6
class Client(Base): 
    ...<snip>... 
    parent = relation('Client', remote_side=[client_id]) 

文檔這裏:orm/self_referential.html

相關問題