2015-01-18 3 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')) 

Я пытаюсь отобразить общественный обращенную базу данных MS SQL, представленные в штате Нью-Гемпшир. Таким образом, никаких изменений схемы не разрешено.

Почему он жалуется на отсутствие отношения ForeignKey, когда четко определено в законодательстве класса?

+0

ошибка полностью о настройке ОРМ; на этом этапе (или на самом деле на любом этапе) SQLA не знает и не заботится о том, что FK физически находится в db – Eevee

+1

. Обратите внимание: поскольку вы явно предоставляете имена столбцов в любом случае, вы можете использовать имена атрибутов, такие как 'country_code', которые читаются более естественно как атрибуты в Python – Eevee

ответ

7

AFAIK вы должны использовать имя_таблицы в ForeignKey:

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

Пригвожден! Спасибо. –

+3

или, для уменьшения путаницы, не используйте строку, когда вы можете ее избежать: 'ForeignKey (County.CountyCode)' – Eevee

+0

Также работает. Спасибо. –

Смежные вопросы