異なるファイルのリレーションシップでテーブルを区切るときに問題があります。下の表を3つの別々のファイルに入れ、サードパーティのページにTableAをインポートしますが、ロード順を管理することはできません。SQLAlchemyリレーションシップを持つテーブルをインポートする
ほとんどの場合、私は次のエラーを受け取ります。
sqlalchemy.exc。InvalidRequestError:Mapper Mapper | TableA | tableaを初期化するときに、式 'TableB'が名前の検索に失敗しました( "名前 'TableB'が定義されていません)。これがクラス の名前である場合は、両方の依存クラスが定義された後に、この関係()をクラスに追加することを検討してください。
class TableA(Base):
__tablename__ = "tablea"
id = Column(Integer, primary_key=True)
name = Column(String)
tableB = relationship("TableB", secondary = TableC.__table__)
class TableB(Base):
__tablename__ = "tableb"
id = Column(Integer, primary_key=True)
name = Column(String)
class TableC(Base):
__tablename__ = "tableab"
tableAId = Column("table_a_id", Integer, ForeignKey("TableA.id"), primary_key=True)
tableBId = Column("table_b_id", Integer, ForeignKey("TableB.id"), primary_key=True)
回答ありがとうございました:) – bozhidarc
関係で使用できるようにするには、クラスをインポートする必要がありますか? –