Несколько много для многих столов объединяются с sqlalchemy

Новое в SQLalchemy, вот моя проблема:

Моя модель:

user_group_association_table = Table('user_group_association', Base.metadata, Column('user_id', Integer, ForeignKey('user.id')), Column('group_id', Integer, ForeignKey('group.id')) ) department_group_association_table = Table('department_group_association', Base.metadata, Column('department', Integer, ForeignKey('department.id')), Column('group_id', Integer, ForeignKey('group.id')) ) class Department(Base): __tablename__ = 'department' id = Column(Integer, primary_key=True) name = Column(String(50)) class Group(Base): __tablename__ = 'group' id = Column(Integer, primary_key=True) name = Column(String) users = relationship("User", secondary=user_group_association_table, backref="groups") departments = relationship("Department", secondary=department_group_association_table, backref="groups") class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True) firstname = Column(String(50)) surname = Column(String(50)) 

Таким образом, этот код отражает следующие отношения:

  -------- --------- -------------- | User | --- N:M --- | Group | --- N:M --- | Department | -------- --------- -------------- 

Я пытался работать с объединениями, но мне все равно не удалось сделать следующее:

Один запрос sqlalchemy для получения всех экземпляров пользователей, зная имя отдела (скажем, «R & D»)

Это должно начинаться с:

 session.query(User).join(... or session.query(User).options(joinedLoad(... 

Кто-нибудь может помочь?

Спасибо за ваше время,

пьер

2 Solutions collect form web for “Несколько много для многих столов объединяются с sqlalchemy”

 session.query(User).join((Group, User.groups)) \ .join((Department, Group.departments)).filter(Department.name == 'R&D') 

Это также работает, но использует суб-выбор:

 session.query(User).join((Group, User.groups)) \ .filter(Group.departments.any(Department.name == 'R&D')) 

Почему бы вам не создать связь между таблицами ?

После его реализации, чтобы получить желаемое:

 list_of_rnd_users = [u for u in Users if 'R&D' in u.departments] 

где атрибут .departments был бы свойством для ваших отношений.

  • SQLAlchemy необработанная подстановка параметров SQL с предложением IN
  • SQLALchemy DB Session with Flask, Postgres
  • Подсчет отношений в SQLAlchemy
  • flask-sqlalchemy - PostgreSQL - Определить конкретную схему для таблицы?
  • Хранение массива PostgreSQL значений ENUM
  • SQLAlchemy повышает значение None, вызывает TypeError
  • SQLAlchemy: проверьте, присутствует ли объект в таблице.
  • Ошибка курсора sqlalchemy во время yield_per
  • Неописанный скрипт неожиданно работает быстрее, чем версия Threaded
  • Что эквивалентно автосознанию Django, auto_now_add в SQLAlchemy?
  • SQLAlchemy: как упорядочить результаты запроса (order_by) в поле отношений?
  •  
    Interesting Posts for Van-Lav

    Как сообщить Python о преобразовании целых чисел в слова

    Как определить, является ли ячейка пустой при чтении файлов Excel с использованием библиотеки xlrd?

    Отключение тиков в Bokeh

    Python Удалить последние 3 символа строки

    Взаимная блокировка потока исключений, с отбрасыванием в очереди функций mutex / lock в Python?

    Функция Split add: \ xef \ xbb \ xbf … \ n в мой список

    Python Spark Как отображать поля одного rdd на другой rdd

    Chi square numpy.polyfit (numpy)

    Как вызвать функцию / переменную скрипта оболочки из python?

    python – добавление к одному файлу из нескольких потоков

    Как найти все упорядоченные пары элементов в массиве целых чисел, сумма которых лежит в заданном диапазоне значений

    Удалите несколько элементов из списка Python всего за одно утверждение

    Возможно ли получить значение целевой функции на каждом этапе обучения?

    Как запустить python из Sublime text 3?

    добавить заголовок в сборник pandas hist plot

    Python - лучший язык программирования в мире.