Найти - Пользователи
Полная версия: Sqlalchemy вопрос по query
Начало » Базы данных » Sqlalchemy вопрос по query
1
f1aky
есть две модельники
class A(Base):
...
x = Column(Float)

class B(Base):
...
x = Column(Float)
возможно ли однис запросом выбрать данные из двух таблиц, чтл типо такого(знаю про синтасическую ошибку)
db.session.query(A B).filter(A.x < 5, B.x < 5).all()
возвращает должег список из A и B обьектов.
или только двумя запросами и слаживать списки?

вариант с наследованием не подходит, т.к и A и В уже наследуют две разные модели
bismigalis
тебе нужен union
f1aky
union и union_all не работает с обьектами, т.е.
>>>qa = session.query(A.x).filter(A.x<=2)
>>>qa.all()
[(0,), (1,), (2,)]
>>>qb = session.query(B.x).filter(B.x>=0)
>>>qb.all() # prints
[(0,), (1,), (2,)]
>>>qa.union_all(qb).all()
[(0,), (1,), (2,), (0,), (1,), (2,)]
так работает, но если возвращать обьект, а не атрибут, то не работает
>>>qa = session.query(A.).filter(A.x<=2)
>>>qa.all()
[<A object at ....>, <A object at ...>, <A object at ...>]
>>>qb = session.query(B).filter(B.x>=0)
>>>qb.all() # prints
[<B object at ...>, <B object at ...>, <B <object at ...>]
>>>qa.union_all(qb).all()
[<A object at ....>, <A object at ...>, <A object at ...>]
выводит только А обьекты. Использование union вместо union_all нечего не меняет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB