0

Как создать подзапрос в SQLAlchemy?

16

Описание проблемы:

Я использую SQLAlchemy и пытаюсь выполнить следующий SQL-запрос:

SELECT *
FROM Residents
WHERE apartment_id IN (SELECT ID
                       FROM Apartments
                       WHERE postcode = 2000)

Не удается выполнить его как сырой SQL с помощью db.engine.execute(sql), так как возникает ошибка о том, что мои связи не существуют. Однако я успешно выполняю запросы к базе данных в следующем формате: session.query(Residents).filter_by(???).

Я не могу разобраться, как создать нужный мне запрос с использованием этого формата. Можете помочь найти правильный способ составления данного запроса с использованием SQLAlchemy?

1 ответ(ов)

0

Если вы используете этот метод для обновления вашей базы данных, не забудьте добавить аргумент synchronize_session='fetch'. Ваша команда будет выглядеть примерно так:

subquery = session.query(Apartments.id).filter(Apartments.postcode==2000).subquery()
query = session.query(Residents).\
          filter(Residents.apartment_id.in_(subquery)).\
          update({"key": value}, synchronize_session='fetch')

Иначе вы можете столкнуться с проблемами.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь