SQLalchemy: мне нужно построить отношения для трех таблиц: один-ко-многим, многие-ко-многим, многие-к-одному.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 SQLalchemy: мне нужно построить отношения для трех таблиц: один-ко-многим, многие-ко-многим, многие-к-одному.

Сообщение Anonymous »

Мне нужно построить таблицы как на картинке, получается очень сложная структура, где я понимаю какие связи нужно использовать, но не понимаю как это сделать
пример картинки

Код: Выделить всё

class ChampionshipsTable(Base):
__tablename__ = "championships"

id: Mapped[int] = mapped_column(primary_key=True)
CId: Mapped[int] = mapped_column(Integer(), unique=True)
championship_name = mapped_column(String(50))

class TournamentsTable(Base):
__tablename__ = "tournaments"

id: Mapped[int] = mapped_column(primary_key=True)
CId: Mapped[int] = mapped_column(ForeignKey("championships.CId"))
TId: Mapped[int] = mapped_column(Integer(), unique=True)
tournament_name: Mapped[str] = mapped_column(String(50))

class MatchesTable(Base):
__tablename__ = "matches"

id: Mapped[int] = mapped_column(primary_key=True)
CId: Mapped[int] = mapped_column(ForeignKey("championships.CId"))
TId: Mapped[int] = mapped_column(ForeignKey("tournaments.TId"))
match_id: Mapped[int] = mapped_column(Integer(), unique=True)
Есть ли универсальное решение?
Я пытаюсь строить таблицы, как в примере «многие ко многим» в sqlalchemy, вот так:

Код: Выделить всё

class ChampionshipsTable(Base):
__tablename__ = "championships"

id: Mapped[int] = mapped_column(primary_key=True)
CId: Mapped[int] = relationship("TournamentsTable", secondary="matches", back_populates="championships")
championship_name = mapped_column(String(50))

class TournamentsTable(Base):
__tablename__ = "tournaments"

id: Mapped[int] = mapped_column(primary_key=True)
CId: Mapped[int] = relationship("ChampionshipsTable", back_populates="tournaments")
TId: Mapped[int] = relationship("MatchesTable", backref="tournaments")
tournament_name: Mapped[str] = mapped_column(String(50))

class MatchesTable(Base):
__tablename__ = "matches"

id: Mapped[int] = mapped_column(primary_key=True)
CId: Mapped[int] = mapped_column(ForeignKey("championships.id"))
TId: Mapped[int] = mapped_column(ForeignKey("tournaments.id"))
match_id: Mapped[int] = mapped_column(Integer(), unique=True)
и вот что у меня получилось:

Код: Выделить всё

sqlalchemy.exc.InvalidRequestError: Mapper 'Mapper[TournamentsTable(tournaments)]' has no property 'championships'.  If this property was indicated from other mappers or configure events, ensure registry.configure() has been called.
Я не знаю, что делать

Подробнее здесь: https://stackoverflow.com/questions/788 ... ny-many-to
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»