Ошибка отношения SQLAlchemy foreign_keys - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь установить отношение в 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"))

Чтобы объяснить это немного, моя таблица Project использует тариф, с другой стороны, моя таблица Tariff может быть создана внутри проекта. Проект может создать тариф и использовать другой, а тариф может быть создан вне любого проекта.

Ошибка в SQLAlchemy: sqlalchemy.exc.NoForeignKeysError: Не удалось определить условие соединения между родительскими / дочерними таблицами в отношении Project.tariff - нет внешних ключей, связывающих эти таблицы. Но я уверен, что prj_id - это внешний ключ Тарифа, верно?

Эта структура может быть немного неуклюжей, но можно ли заставить ее работать с sqlalchemy или мне нужно ее немного изменить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...