我正在尝试通过使用 SQLAlchemy 连接和选择特定列来查询多个 tables。我的查询看起来像这样
data = db.session.query(
TableA,
TableB,
TableC,
).filter(
TableA.id == TableB.x_id,
TableA.id2 == TableB.y_id,
TableA.id3 == TableB.z_id,
).filter(
TableA.id == TableC.id_a,
TableA.id3 == TableC.id_b,
between(TableB.date, from_date, to_date)
).distinct(
TableA.id
).select(
TableA.id,
TableA.contact,
TableB.city,
TableC.source,
TableC.name,
).all()
当我运行这个我得到一个错误
AttributeError: 'BaseQuery' object has no attribute 'select'
如何使用此查询选择特定列或如何改进?选择特定列的原因是所有这些 tables 都有 10 个列,并且返回所有列会很慢,因为它会有很多数据。我试图将 select
函数移到开头,但没有帮助。
回答1
查询对象没有选择,您应该像这样查询然后过滤结果
db.query(models.TableA, models.TableB, models.TableC).filter(modes.TableA.id)
并且要抓住你应该通过 first()
或 all()
抓住它们的对象