Python 向查询添加列,在SQLAlchemy中的映射类内返回

Python 向查询添加列,在SQLAlchemy中的映射类内返回,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,这很简单。这项工作的目的是: >>> 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-

这很简单。这项工作的目的是:

>>> 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
属性,而不是作为兄弟姐妹?

对于简单表达式,我将使用它添加到
SomeModel
,在这种情况下,它将始终是其实例的属性。
或者,你可以看一看,做同样的工作

如果您只是偶尔需要它,则只需在查询执行后将其设置为属性:

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]

谢谢column_属性的问题是必须在类求值时定义表达式,但我需要在查询时构建表达式(用于基于HTTP querystring参数计算距离)。将属性附加到类的解决方案可能是我的最佳选择。