postgresql - SQLAlchemy: AttributeError: 'BaseQuery' 对象没有属性 'select'

我正在尝试通过使用 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() 抓住它们的对象

相似文章

随机推荐

最新文章