2014-10-29 58 views
0

我已經定義了2個表:SQLAlchemy的不能確定加盟條件

class TCableSet(Base): 
    __tablename__ = 'tCableSet' 

    ixCableSet = Column(Integer, primary_key=True) 
    decCableSetOne = Column(Numeric(8, 2)) 
    decCableSetTwo = Column(Numeric(8, 2)) 
    decCableSetThree = Column(Numeric(8, 2)) 

class TStepVoltage(Base): 
    __tablename__ = 'tStepVoltage' 

    ixStepVoltage = Column(Integer, primary_key=True) 
    ixSubReport = Column(Integer, ForeignKey('tSubReport.ixSubReport'), nullable=False) 
    iVoltage = Column(Integer) 
    ixPhaseA = Column(Integer, ForeignKey('tCableSet.ixCableSet'), nullable=False) 
    ixPhaseB = Column(Integer, ForeignKey('tCableSet.ixCableSet'), nullable=False) 
    ixPhaseC = Column(Integer, ForeignKey('tCableSet.ixCableSet'), nullable=False) 

    sub_report = relationship('TSubReport', 
           backref=backref('step_voltage')) 

我明白爲什麼我收到此錯誤,但不能找出一個適當的方式(還)。 表保存時,我將值存儲在tCableSet表中,然後在我的tStepVoltage表中使用該ID作爲外鍵。我遇到的問題是當我去檢索數據時,我希望能夠通過關係獲得值(tCableSet行)以及我的tStepVoltage表格的其餘部分,但是我不知道如何去處理此問題我的tCableSet中沒有可以直接通過關係鏈接到我的tStepVoltage的字段。我基本上只需要tCableSet進行標準化

回答

1

由於您有多個指向同一個表的外鍵,所以您必須告訴SQLAlchemy要使用哪個外鍵。

例如:

sub_report_a = relationship('TSubReport', 
          backref=backref('step_voltage'), 
          foreign_keys=[ixPhaseA]) 
+0

謝謝你,我想類似的東西前面,但我錯過了foreign_keys屬性。我最終做出了一個快速自定義類來基本模擬這個。可能會改變它以保持連續性 – john 2014-10-29 20:05:34