将python对象转换为列表列表

将python对象转换为列表列表,python,python-3.x,lambda,sqlalchemy,Python,Python 3.x,Lambda,Sqlalchemy,我正在尝试将sqlalchemy对象转换为列表列表: 我试过做: lambda q:[q.all()中obj的location.name] 它成功了 但当我想在列表中添加/追加另一个时,它会中断: lambda q:[(location.name,obj.name代表obj,location in q.all()] 这就是我想要的: lambda q:[ [location.name,str(对象流量)] 对于obj,在q.all()中的位置] 预期产出: [ ['location na

我正在尝试将sqlalchemy对象转换为列表列表:

我试过做:

lambda q:[q.all()中obj的location.name]

它成功了

但当我想在列表中添加/追加另一个时,它会中断:

lambda q:[(location.name,obj.name代表obj,location in q.all()]

这就是我想要的:

lambda q:[
[location.name,str(对象流量)]
对于obj,在q.all()中的位置]

预期产出:

[
    ['location name','10.0'],
    ['another location','20.15']
]
更新:

qry = db.Session.query(db.Log, db.Location).\
    filter(db.Log.location_id == db.Location.id).\
    filter(db.Log.location_id == id)

    helpers.write_csv_from_query(resp, qry, falcon.HTTP_200, header,
     lambda q: [
          [location.name, str(obj.flowrate)] 
     for obj,location in q.all()])
处理对象查询的函数:

def write_csv_from_query(resp, query, status, header, result_func):
    """Writes CSV response."""
    csv_name = date_to_str(datetime.now()) + ".csv"
    csv_header = ','.join(header) + "\n"
    # csv_data = convert_to_csv(result_func(query))
    csv_data = []
    csv_data = result_func(query)
    csv_data = ','.join(csv_data)

    resp.status = status
    resp.content_type = 'text/csv'
    resp.set_header('Content-disposition', 'attachment; filename=' + csv_name)
    resp.body = csv_header + csv_data

由于在第一个示例中,
location
与lambda分开显示(您的迭代变量称为
obj
),因此我假设
location
是某个外部变量(位于
q
和lambda之外),您只需执行以下操作即可

lambda q: [(location.name, obj.name for obj in q.all()]
最后一个例子是:

lambda q: [[location.name, str(obj.flowrate)] for obj in q.all()]
或者,由于
obj.name
似乎等同于
location.name
(这是链接要点中注释掉的部分):

甚至(在链接表的情况下):

(我真的无法从你给出的公式中分辨出什么是正确的公式,但我猜这是其中之一。)



摘要:仅迭代一(1)个对象,并从该单个对象提取信息。

lambda q:[(location.name,obj.name for obj,location In q.all()]
location.name
之前的括号中没有结束括号回溯错误消息是什么?在第一个示例中,
q.all()
迭代
obj
(即每次都返回一个obj)。在第二个示例中,它现在迭代
obj,location
:两个项目。这没有意义,除非您同时更改了
q
。@KhalilAmmour-“'TypeError',['sequence item 0:expected str instance,list found'”)也许我没有完全解释我要实现的目标。这是函数的代码,也是进行API调用的文件,请注意注释行是有效的,但是代码看起来很难看,我正试图让它更像Python
lambda q: [[obj.name, str(obj.flowrate)] for obj in q.all()]
lambda q: [[obj.location.name, str(obj.flowrate)] for obj in q.all()]