我正在查詢由第三方維護的專有數據庫。數據庫有許多表,每個表都有大量的字段。使用反射建模複雜關係的SQLAlchemy
我的問題涉及三個感興趣的表格,Tree,Site和Meter。
樹表描述了簡單樹結構中的節點。與其他數據一起,它有一個外鍵引用自己的主鍵。它還有一個Object_Type字段和一個Object_ID字段。 Site和Meter表中每個都有很多字段。
樹節點有一比一的關係要麼是一米或網站。如果Object_Type字段爲1,則Object_ID字段引用Site表中的主鍵。如果它是2,則它指的是Meter表中的主鍵。
我使用反射來加載像這樣
Base = declarative_base(cls=DeclarativeReflectedBase)
class Meter(Base):
__tablename__ = 'Meter'
class Site(Base):
__tablename__ = 'Site'
class Tree(Base):
__tablename__ = 'Tree'
Parent_Node_ID = Column(Integer, ForeignKey('Tree.Node_ID'))
Node_ID = Column(Integer, primary_key=True)
children = relationship("Tree", backref=backref('parent', remote_side=[Node_ID]))
Base.prepare(engine)
我已經包含了表結構的自我指涉的關係,並完美的作品。我如何使用Object_ID作爲外鍵添加兩個關係,並在Object_Type字段上進行適當的檢查?
這是很難跟隨你的問題,但或許把一個指數[OBJECT_ID,OBJECT_TYPE],因爲那將是每個樹節點是唯一的。 – AJcodez 2012-07-09 19:08:26