SQLAlchemy: наиболее эффективный способ выбрать родительский элемент с несколькими дочерними элементами, допускающими знPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 SQLAlchemy: наиболее эффективный способ выбрать родительский элемент с несколькими дочерними элементами, допускающими зн

Сообщение Гость »


Я хочу выбрать родительского элемента только с одним ненулевым ChildType. Вот схема, если быть точнее:

Родительский класс (Базовый): ... идентификатор: Сопоставлено[int] тип: Сопоставлено[str] child_type_a: Сопоставлено['ChildTypeA | Нет'] = связь (uselist=False) child_type_b: Сопоставлено['ChildTypeB | Нет'] = связь (uselist=False) child_type_c: Mapped['ChildTypeC | Нет'] = связь (uselist=False) класс ChildTypeA/B/C(базовый): идентификатор: Сопоставлено[int] Parent_id: Mapped[int] = Mapped_column(BigIntegerType, ForeignKey('parent_table.id')) родительский элемент: Mapped['Parent'] = Relations(back_populates="child_type_a/b/c") В моем случае каждый Родитель может иметь только одного дочернего элемента из этих трех типов (a, b, c). Поэтому я хотел бы присоединиться только к таблице, в которой есть запись, ссылающаяся на этот конкретный Parent.

На данный момент единственное работающее решение, которое я придумал, — это объединить все таблицы ChildType:

select(Родительский) .join(ChildTypeA, ChildTypeA.parent_id == Parent.id) .join(ChildTypeB, ChildTypeB.parent_id == Parent.id) .join(ChildTypeC, ChildTypeC.parent_id == Parent.id) .параметры( contains_eager(Parent.child_type_a), contains_eager(Parent.child_type_b), contains_eager(Parent.child_type_c), ) Но, насколько я понимаю, он ищет по всем таблицам, даже по тем, из которых не ссылается наш текущий Parent. В идеале было бы неплохо иметь какое-то условное соединение на основе поля Parent.type («a», «b», «c»).
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Selenide: найти элемент с определенными дочерними элементами
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Найти элемент с определенными дочерними элементами
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Найти элемент с определенными дочерними элементами
    Anonymous » » в форуме CSS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как правильно обрабатывать пользовательский элемент Javascript (веб-компонент) с дочерними элементами?
    Anonymous » » в форуме Html
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как правильно обрабатывать пользовательский элемент Javascript (веб-компонент) с дочерними элементами?
    Anonymous » » в форуме Html
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

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