Python 如何在SQLAlchemy ORM中指定嵌套的自引用邻接列表关系?
我的任务是为公司内部开发一些web应用程序,这些应用程序隐藏了一个仍在使用的非常旧的程序所使用的非常丑陋的模式。我正在使用Python+SQLAlchemy 1.3和声明性ORM模块。我必须保持向后兼容性 本质上,Python 如何在SQLAlchemy ORM中指定嵌套的自引用邻接列表关系?,python,database,sqlalchemy,Python,Database,Sqlalchemy,我的任务是为公司内部开发一些web应用程序,这些应用程序隐藏了一个仍在使用的非常旧的程序所使用的非常丑陋的模式。我正在使用Python+SQLAlchemy 1.3和声明性ORM模块。我必须保持向后兼容性 本质上,订单有多个行s,行有多个项目(由列DELNUM\u 10引用)ORDNUM_10、LINNUM_10和PRTNUM_10共同构成一个复合主键,它以顺序唯一地标识零件和相关信息 在图中的示例中,我想要一个Python对象,如下所示: order = {number: '2000072',
订单
有多个行
s,行有多个项目(由列DELNUM\u 10
引用)ORDNUM_10
、LINNUM_10
和PRTNUM_10
共同构成一个复合主键,它以顺序唯一地标识零件
和相关信息
在图中的示例中,我想要一个Python对象,如下所示:
order = {number: '2000072', lines: {1: [Part{MAT03}, Part{BSKQ03}]...}}
PRTNUM_10
是另一个ORM映射类Part
的外键
如何使用relationship()
和/或构造Order
类来实现此功能
class Part(Base):
__table__ = Part_Master
SKU = __table__.columns.PRTNUM_01
name = __table__.columns.PMDES1_01
description = __table__.columns.PMDES2_01
category = __table__.columns.COMCDE_01
Order_Master = Table(
'Order_Master',
meta,
Column('ORDNUM_10', CHAR(length=8), primary_key=True, nullable=False),
Column('LINNUM_10', CHAR(length=2), primary_key=True, nullable=False),
Column('DELNUM_10', CHAR(length=2), primary_key=True, nullable=False)
# more unholy columns
)
class Order(Base):
__table__ = Order_Master
number = __table__.columns.ORDNUM_10
line = __table__.columns.LINNUM_10
subline = __table__.columns.DELNUM_10
lines = relationship(Order, someOtherThingToMakeItWork)