SQLAlchemy вывод всех значений
Созданы следующие модели и их join для выборки данных.
class Bl_as(Base):
"""Data model example."""
__tablename__ = "Table1"
__table_args__ = {"schema": "schema1"}
filet = Column(Integer, primary_key=True, unique=False, nullable=False)
filet5 = Column(Integer, unique=False, nullable=False)
filet6 = Column(Integer, unique=False, nullable=False)
filet7 = Column(Integer, unique=False, nullable=False)
def __repr__(self):
return '<Example model {}>'.format(self.filet)
class Sala(Base):
"""Data model example."""
__tablename__ = "Table2"
__table_args__ = {"schema": "schema2"}
code1 = Column(Integer, primary_key=True, unique=False ,nullable=False)
code2 = Column(String(3), nullable=False)
code3 = Column(String(3000), nullable=False)
code4 = Column(String(60), nullable=False)
code5 = Column(Text, nullable=False)
code6 = Column(Text, nullable=False)
code7 = Column(Text, nullable=False)
def __repr__(self):
return '<Example model {}>'.format(self.code1)
class Stas(Base):
"""Data model example."""
__tablename__ = "table4"
__table_args__ = {"schema": "schema1"}
filet = Column(Integer, primary_key=True, unique=False, nullable=False)
filet2 = Column(Integer, unique=False, nullable=False)
filet3 = Column(Integer, unique=False, nullable=False)
filet4 = Column(Integer, unique=False, nullable=False)
deleteed = Column(DateTime, unique=False, nullable=False)
# team = relationship("Acas")
def __repr__(self):
return '<Example model {}>'.format(self.filet)
class Acas(Base):
"""Data model example."""
__tablename__ = "table3"
__table_args__ = {"schema": "schema1"}
filet = Column(Integer, primary_key=True, unique=False, nullable=False)
filet2 = Column(Integer, unique=False, nullable=False)
filet3 = Column(Integer, unique=False, nullable=False)
date_from = Column(DateTime, unique=False, nullable=False)
date_to = Column(DateTime, unique=False, nullable=False)
def __repr__(self):
return '<Example model {}>'.format(self.filet)
def get():
sub_quer = (db_session.query(
Bl_as.filet,
Bl_as.filet5,
func.max(Bl_as.filet6.cast(Integer)).label("min_a"),
func.max(Bl_as.filet7.cast(Integer)).label("min_b=")
).
group_by(Bl_as.filet, Bl_as.filet5)).subquery()
records = db_session.query(Acas, Stas, sub_quer, Sala)\
.join(Stas, Acas.filet==Stas.filet, isouter=True)\
.join(sub_quer, Acas.filet==sub_quer.c.filet, isouter=True)\
.join(Sala, Stas.filet4==Sala.code1, isouter=True)\
.filter(Acas.filet2 == Stas.filet2)\
.filter(Acas.filet3 == Stas.filet3) \
.filter(func.current_date().between(Acas.date_from, Acas.date_to)) \
.filter(Stas.deleteed is not None)\
.filter(Stas.filet4 > 0)\
.filter(sub_quer.c.min_a == 1)\
.filter(sub_quer.c.min_b not in (3, 4))\
.filter(Stas.filet4 == 445).all()
print(records)
При выводе records я получаю вот такой вот результат.
[(<Example model 445>, <Example model 3113>, Decimal('55533'), Decimal('11'), Decimal('1'), Decimal('2'), <Example model 55322>)]
Однако, при вызове sql запроса должно быть 3 кортежа, а возвращается 1. Подскажите, как вывести все ? Пример желаемого результата
[(<Example model 445>, <Example model 3113>, Decimal('55533'), Decimal('11'), Decimal('1'), Decimal('2'), <Example model 55322>), (<Example model 445>, <Example model 3113>, Decimal('55533'), Decimal('11'), Decimal('1'), Decimal('2'), <Example model 11111>), (<Example model 445>, <Example model 3113>, Decimal('55533'), Decimal('11'), Decimal('1'), Decimal('2'), <Example model 22222>)]