【问题标题】:Many to One relationship with SQLAlchemy in the same table同一张表中与 SQLAlchemy 的多对一关系
【发布时间】:2011-04-13 12:42:38
【问题描述】:

我有一个“客户”表,其中一个客户可以是另一个客户的孩子。

这是表定义。

[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'))

对实现这一点有什么建议吗?

【问题讨论】:

标签: python sql sqlalchemy


【解决方案1】:
class Client(Base):
    ...<snip>...
    parent = relation('Client', remote_side=[client_id])

这里的文档:orm/self_referential.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2015-11-12
    • 2012-10-06
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多