[英]Convert python object to list of lists
我正在嘗試將sqlalchemy對象轉換為列表列表:
我試着做:
lambda q: [location.name for obj in q.all()]
而且有效。
但是,當我想在列表中添加/添加另一個時,它會中斷:
lambda q: [(location.name, obj.name for obj, location in q.all()]
這就是我想要的:
lambda q: [ [location.name, str(obj.flowrate)] for obj, location in 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
(這是從鏈接的要點中注釋掉的部分中得出的):
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()]
(我不能說出您給出的正確公式是什么,但是我想這就是其中之一。)
摘要:僅迭代一(1)個對象,然后從該單個對象中提取信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.