세 개의 테이블 : 장치, 슬롯, 포트가 있습니다.세 테이블 간의 SQLAlchemy 관계
- 장치는
- 슬롯 여러 포트를해야합니다 여러 개의 슬롯을 가지고 있지만,
- 포트는 하나의 슬롯 내 경험에
에 속하는 하나의 장치에 속하는 것,이 같이 나타납니다 : MA에
- 장치 (일대) 구멍
- 슬롯 (한 ny) 포트
슬롯과 관계없이 모든 관련 Ports 객체를 제공하는 관계를 내 Devices 클래스에 설정하려고합니다. 나는 그것을 이해할 수 없다. 연관 테이블은 가까이에 보이지만, 내가 원하는 것을 수행하는 방법에 대한 예를 구분할 수는 없습니다.
d = session.query(Devices).first()
d.ports
모든 지원이 크게 감사합니다 :
class Devices(Base):
__tablename__ = 'devices'
__table_args__ = {
'mysql_engine' : 'MyISAM',
'mysql_charset': 'latin1'
}
did = Column(INTEGER, primary_key=True)
hostname = Column(VARCHAR(255))
site = Column(INTEGER, ForeignKey('site.sid'), default=0)
model = Column(INTEGER)
fqdn = Column(VARCHAR(255))
slots = relationship("Slots")
changes = relationship("PortStateLog")
ports = relationship("Ports", primaryjoin="and_(Slots.device==Devices.did,Ports.slot==Slots.sid)")
class Slots(Base):
__tablename__ = 'slots'
__table_args__ = {
'mysql_engine' : 'MyISAM',
'mysql_charset': 'latin1'
}
sid = Column(INTEGER, primary_key=True)
device = Column(INTEGER, ForeignKey('devices.did'), default=None)
slot = Column(VARCHAR(10))
module = Column(INTEGER)
slot_status = Column(INTEGER)
card_status = Column(INTEGER)
ports = relationship("Ports", primaryjoin="Ports.slot==Slots.sid")
class Ports(Base):
__tablename__ = 'ports'
__table_args__ = {
'mysql_engine' : 'MyISAM',
'mysql_charset': 'latin1'
}
pid = Column(INTEGER, primary_key=True)
slot = Column(INTEGER, ForeignKey('slots.sid'), default=None)
port = Column(INTEGER)
name = Column(VARCHAR(200))
status = Column(INTEGER)
description = Column(VARCHAR(200))
op_status = Column(VARCHAR(40))
substatus = Column(INTEGER(4))
type = Column(INTEGER)
clean = Column(TINYINT(4))
speed = Column(INTEGER(10))
duplex = Column(CHAR(1))
sfp = Column(INTEGER)
위는 지금까지 .. 나는 단순히 모든 포트를 다시 보려면 아래의 마지막 줄을 원하는 무슨이다.
답변을 드리지 못해 너무 죄송합니다. 나는 이것을 검토하고이 의견을 갱신하고/문제가 해결되면 승인하겠습니다. 나는 심지어 지금이 고슴도치를 알아 채지 못했다! – Trenton