私はデータベースからテーブルの束を反映するためにsqlacodegen
を使用しています。 と私は次のエラーを取得しています:継承後のsqlalchemy.exc.AmbiguousForeignKeysError
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