Python 如何在SQLAlchemy 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',

我的任务是为公司内部开发一些web应用程序,这些应用程序隐藏了一个仍在使用的非常旧的程序所使用的非常丑陋的模式。我正在使用Python+SQLAlchemy 1.3和声明性ORM模块。我必须保持向后兼容性

本质上,
订单
有多个
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)