SQLAlchemy跨多个表的一对一关系

时间:2018-08-21 13:09:17

标签: python sqlalchemy relationships

我一直在尝试对四个表之间的关系进行建模,其中可以将表A中的条目链接到其他三个表中的条目。例如:

Table A (components)
id     brand     status
N1     br3       free
N2     br2       used
N3     br2       used
N4     br3       used
N5     br2       used

Table B (device1)
id     comp1     comp2
2      N2        N3

Table C (device2)
id     comp1     comp2
6      N4        N5

Table D (device3)
id     comp1     comp2

我可以像这样从设备表链接组件:

class Device1(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    comp1 = db.Column(db.String(20), db.ForeignKey('components.id'), unique=True) 
    comp2 = db.Column(db.String(20), db.ForeignKey('components.id'), unique=True) 

但是如何为表A中的所有三个表实现关系? 我正在寻找类似component.deviceinstalled的东西,例如,它将返回该组件所连接的设备,而不管它属于哪个表(B,C或D),例如:

component1 -> <N2  br2  used>
component1.deviceinstalled -> <2  N2  N3> from table B

component2 -> <N4  br3  used>
component2.deviceinstalled -> <6  N4  N5> from table C

0 个答案:

没有答案