SQLAlchemy ссылается на себя с помощью back_populates ⇐ Python

Программы на Python
Anonymous
SQLAlchemy ссылается на себя с помощью back_populates

Сообщение Anonymous »

Я пытаюсь создать небольшой API-интерфейс словаря и объединить его с базой данных.
И определить базу следующим образом (необязательные поля исключены)
translations = Table(
"translations",
Base.metadata,
Column("left_id", ForeignKey("words.id"), primary_key=True),
Column("right_id", ForeignKey("words.id"), primary_key=True),
)

class Word(Base):
__tablename__ = "words"

id: Mapped[int] = mapped_column(primary_key=True)
value: Mapped[str] = mapped_column(String(24))
translation: Mapped[Set["Word"]] = relationship(
secondary=translations,
primaryjoin=id == translations.c.left_id,
secondaryjoin=id == translations.c.right_id,
lazy="joined",
back_populates="translation",
)

Моя проблема в том, что back_populates не выполняет никакой автоматизации.
""" Lets pretend session created here"""
w1 = Word(value="bonjour")
w2 = Word(value="hello")
s.add_all([w1, w2])
w1.translation.add(w2)
await s.commit()

И мой w2.translation — пустой набор.
**Отредактировано
Да, это называется переводом, но его много много. И моя цель сейчас — создать метод, связывающий множество слов. Без обратной рефери я тону в сложности или нет, хорошее ли это решение:
def link(session, *args):
for idx, word in enumerate(args[:-1]):
word.translation.add(*[arg for arg in args if arg != word])
# word.translation.add(*args[:idx], *[idx+1:])
session.commit()



Подробнее здесь: https://stackoverflow.com/questions/790 ... -populates

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