2015-01-18 25 views
7

मैं Traceback sqlalchemy.exc.NoForeignKeysError: Could not determine join condition between parent/child tables on relationship County.Legislators - there are no foreign keys linking these tables. Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint, or specify a 'primaryjoin' expression.मैं इस sqlalchemy.exc.NoForeignKeysError को कैसे ठीक करूं?

class County(Base): 
    __tablename__ = 'tblCounty' 
    CountyCode = Column('CountyCode', String, primary_key=True) 
    Legislators = relationship('Legislators', backref='County', lazy='dynamic') 

class Legislators(Base): 
    __tablename__ = 'VLegislators' 
    EmployeeNo = Column('EmployeeNo', String, primary_key=True) 
    CountyCode = Column('CountyCode', String, ForeignKey('County.CountyCode')) 

मैं न्यू हैम्पशायर के राज्य द्वारा प्रदान की सार्वजनिक संपर्क वाला एक एमएस SQL ​​डेटाबेस मैप करने के लिए कोशिश कर रहा हूँ क्यों मिलता है। तो कोई स्कीमा परिवर्तन की अनुमति नहीं है।

जब किसी व्यक्ति को कक्षा विधायकों में स्पष्ट रूप से परिभाषित किया जाता है तो यह विदेशीकी संबंध की कमी के बारे में क्यों शिकायत करता है?

+0

त्रुटि ORM की स्थापना के बारे में पूरी तरह से है, इस चरण (या वास्तव में कोई भी चरण) एसक्यूएलए न तो जानता है और न ही डीबी – Eevee

+1

में एफके भौतिक रूप से क्या देखता है, ध्यान दें कि चूंकि आप स्पष्ट रूप से कॉलम नाम प्रदान कर रहे हैं, इसलिए आप 'country_code' जैसे विशेषता नामों का उपयोग कर सकते हैं जो विशेष रूप से गुणों के रूप में अधिक स्वाभाविक रूप से पढ़ते हैं पायथन – Eevee

उत्तर

7

AFAIK आप ForeignKey में tablename उपयोग करना चाहिए:

CountyCode = Column('CountyCode', String, ForeignKey('tblCounty.CountyCode')) 
+0

में इसे खींचा! धन्यवाद। –

+3

या, कम भ्रम के लिए, जब आप इससे बच सकते हैं तो स्ट्रिंग का उपयोग न करें: 'विदेशीकी (काउंटी। काउंटीकोड) ' – Eevee

+0

भी काम करता है। धन्यवाद। –

संबंधित मुद्दे