Я использую sqlacodegen
для отображения кучи таблиц из моей базы данных. И я получаю следующее сообщение об ошибке:sqlalchemy.exc.AmbiguousForeignKeysError after Inheritance
sqlalchemy.exc.AmbiguousForeignKeysError: Can't determine join between 'Employee' and 'Sales'; tables have more than one foreign key constraint relationship between them. Please specify the 'onclause' of this join explicitly.
Вот упрощенная версия моих таблиц. Я прочитал в документации, что я должен использовать параметр foreign_keys
, чтобы устранить двусмысленность между целями внешнего ключа. Хотя, я думаю, эта проблема связана с наследованием. Может кто-нибудь поможет мне понять, что происходит.
# coding: utf-8
from sqlalchemy import Column, ForeignKey, Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class Employee(Base):
__tablename__ = 'Employee'
EmployeeId = Column(Integer, primary_key=True)
class Sales(Employee):
__tablename__ = 'Sales'
EmployeeID = Column(ForeignKey('Employee.EmployeeId'), primary_key=True)
OldemployeeID = Column(ForeignKey('Employee.EmployeeId'))
employee = relationship('Employee', foreign_keys=[EmployeeID])
old_employee = relationship("Employee", foreign_keys=[OldemployeeID])
Обязательно укажите тип (не только столбец (Foreign ..., но Column (Integer, Foreign ...). Я никогда не видел, чтобы это делалось без него, не уверен, что это проблема здесь хотя я никогда не делал наследование таблицы. – ApolloFortyNine
Какой тип наследования вы хотите сделать? Кажется, вы не настроили свои классы для наследования. – univerio
Я на самом деле не наследовал сам. Вот как некоторые из моих таблицы появляются, когда я запускаю 'sqlacodegen' в моей базе данных. – MetalloyD