Flask Sqlalchemy запрос с использованием объединений и фильтров - PullRequest
0 голосов
/ 14 июля 2020

Здравствуйте, я пытаюсь запросить свою базу данных с тремя моделями,

Product, SalesDetails и SalesReturns

Я хочу запросить модель продукта и вернуть только продукты, идентификатор которых не указан SalesDetails Или, если SalesDetails.Sale_id находится в salesReturns.sale_id

В основном я хочу вернуть все продукты, которые не проданы или были возвращены

Я пробовал что-то вроде это

P1= Product.query.outerjoin(salesDetails)
P2=p1.outerjoin(SalesReturns)
P3=p2.filter(or_(SalesDetails.product_id==None,SalesDetails.sale_id==SalesReturn.sale_id)).all

Проблема в том, что он возвращает все продукты, независимо от того, проданы они или нет,

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

Но запрос возвращает все продукты, даже если во второй раз продажа не была возвращена.

Я действительно новичок в базе данных и sqlalchemy

Это было бы признателен, если вы могли бы помочь.

Если вы не понимаете, что я имею в виду, просто спросите меня в комментарии.

Спасибо.

1 Ответ

0 голосов
/ 15 июля 2020

Я плохо понимаю ваши модели данных, но вы можете сделать что-то вроде этого:

session.query(Product).outerjoin(SalesDetails, SalesDetails.product_id == None).\
outerjoin(SalesReturn, SalesReturn.sale_id == SalesDetails.sale_id).all()
...