Результаты запроса фильтра SQLAlchemy на основе поля другой таблицы - PullRequest
0 голосов
/ 16 апреля 2020

У меня не очень распространенная проблема объединения и фильтрации.

Вот мои модели;

class Order(Base):
    id = Column(Integer, primary_key=True)
    order_id = Column(String(19), nullable=False)
    ... (other fields)

class Discard(Base):
    id = Column(Integer, primary_key=True)
    order_id = Column(String(19), nullable=False)

Я хочу запросить все и полные экземпляры Order, но просто исключаю те, которые совпадают в Discard.order_id на основе поля Order.order_id. Как видите, между order_id полями нет никакой связи.

Я пробовал внешнее левое соединение, notin_, но безуспешно.

1 Ответ

0 голосов
/ 16 апреля 2020

С этим ответом Я достиг желаемых результатов.

Вот мой код;

orders = (
    session.query(Order)
    .outerjoin(Discard, Order.order_id == Discard.order_id)
    .filter(Discard.order_id == None)  # noqa: E711
    .all()
)

Я слишком много внимания уделял сообщению неправильного синтаксиса flake8 на Discard.order_id == None и использовал Discard.order_id is None. Оказалось, что они были по-разному отрисованы sqlalchemy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...