我在模型中设置了关系,因此SQLAlchemy知道如何将一些表连接在一起。有了这个,我想在查询时预先指定所有这些列,以便只运行一个查询。我认为它是这样的:
q = mysql_session.query(SomeItem.col1,
SomeItem.some_relationship1.name,
SomeItem.some_relationship2.name,
SomeItem.col2)
但这给了我错误:
AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with SomeItem.some_relationship1 has an attribute 'name'
最简单的方法是什么?现在,我正在执行:q = mysql_session.query(SomeItem)
然后循环执行q,但这需要运行大量额外查询,这非常缓慢且不必要。
答案 0 :(得分:0)
我想通过明确提到连接可以做到这一点。如果有人以更简洁的方式回答这个问题,我仍然喜欢它,因为联接确实应该被隐含(如问题中的示例所示)。无论如何,这有效:
q = mysql_session.query(SomeItem.col1,
SomeItem.col2,
SomeOtherItem1.name,
SomeOtherItem2.name)\
.join(SomeOtherItem1)\
.join(SomeOtherItem2)