SQLAlchemy foreign_keys关系错误

时间:2018-05-02 09:34:05

标签: python postgresql sqlalchemy

我正在尝试在SQLAlchemy上设置一个关系,以便在删除父表时删除级联中的表。 问题是我的数据库结构有点尴尬,sqlalchemy根本不喜欢它。

这里稍微看一下:

class Project(Base):
  __tablename__ = 'project'
  prj_id = sqla.Column(sqla.INTEGER, primary_key=True)
  name = sqla.Column(sqla.String)

  # Tariff used by project
  t_id = sqla.Column(sqla.INTEGER, sqla.ForeignKey("tariff.t_id"))

  # Tariff created by project
  tariff = relationship("Tariff", cascade="all, delete-orphan", foreign_keys=[prj_id])

class Tariff(Base):
  __tablename__ = "tariff"
  t_id = sqla.Column(sqla.INTEGER, primary_key=True)

  name = sqla.Column(sqla.String)
  prj_id = sqla.Column(sqla.INTEGER, sqla.ForeignKey("project.prj_id"))

为了解释一下我的项目表使用了关税,另一方面我的关税表可以在项目中创建。项目可以创建关税并使用另一个项目,并且可以在任何项目之外创建关税。

SQLAlchemy的错误是: sqlalchemy.exc.NoForeignKeysError:无法确定关系Project.tariff上的父/子表之间的连接条件 - 没有链接这些表的外键。 但我很确定prj_id是关税的外键,对吗?

这个结构可能有点笨拙,但是我可以让它与sqlalchemy一起使用,还是我必须稍微改变它?

0 个答案:

没有答案