【发布时间】:2020-11-12 22:22:55
【问题描述】:
在我使用 SQLAlchemy 的 Flask 应用程序中,所有表都定义在一个文件中 models.py:
training_ids_association_table = db.Table(
"training_ids_association",
db.Model.metadata,
Column("training_id", Integer, ForeignKey("training_sessions.id")),
Column("ids_id", Integer, ForeignKey("image_data_sets.id")),
)
class ImageDataSet(db.Model):
__tablename__ = "image_data_sets"
id = Column(Integer, primary_key=True)
trainings = relationship("Training", secondary=training_ids_association_table, back_populates="image_data_sets")
class TrainingSession(db.Model):
__tablename__ = "training_sessions"
id = Column(Integer, primary_key=True)
image_data_sets = relationship("DataSet", secondary=training_ids_association_table, back_populates="trainings")
所以我想在这里实现的是多对多的关系:
- 一个
ImageDataSet可以属于多个TrainingSession的 - 一个
TrainingSession可以包含多个ImageDataSet
但是,只要我在代码中调用 TrainingSession.query(),就会引发以下错误:
Exception has occurred: InvalidRequestError
When initializing mapper mapped class ImageDataSet->image_data_sets, expression 'Training' failed to locate a name ('Training'). If this is a class name, consider adding this relationship() to the <class 'app.base.models.ImageDataSet'> class after both dependent classes have been defined.
我在这里找到了一些相关的线程,但它们要么要求一对多的关系,要么在不同的文件中定义它们的表。两者都不是这里的情况。
任何想法我做错了什么?
【问题讨论】:
-
当然你会得到这个错误......你没有表名为
Training和DataSet的事情。
标签: python database flask sqlalchemy relationship