这很简单。这是有意的:
>>> db.session.query(SomeModel).all()[0]
SomeModel(41330029-f21e-4022-aed5-e45e61ada399
但是如果我尝试添加另一个列,我会得到一个元组:
>>> db.session.query(SomeModel, some_expression.label('foo')).all()[0]
(SomeModel(41330029-f21e-4022-aed5-e45e61ada399), None)
如何得到平坦的结果?也就是说,SomeModel
内部有foo
属性,而不是兄弟姐妹?
答案 0 :(得分:2)
对于简单表达式,我会将column_property
添加到SomeModel
,在这种情况下,它始终是其实例的属性。
或者,你可以看看Hybrid Attributes做同样的工作。
如果您有时只需要这个,那么只需在查询执行后将其设置为属性:
results = db.session.query(SomeModel, some_expression.label('foo')).all()
for mod, att in results:
mod.foo = att # or: setattr(mod, "foo", att)
results = [mod for mod, _attr in results]