2014-03-12 39 views
3

這是我的電話:session.query(User.username, User.first_name, User.last_name).all()
SQLAlchemy的 - query.all() - 元組的列表與dict

它返回:[('myUsername', 'myFirstname', 'myLastname')]

我想,要爲以下格式:
[{"username":"myUsername", "first_name":"myFirstname", "last_name":"myLastname"}]

[dict(zip(["username","first_name","lastname"], x))]
嘗試,但它返回:[{'username': ('myUsername', 'myFirstname', 'myLastname')}]

+0

通過你有足夠的代表投票吧 – EdChum

回答

2

返回的東西有含元組的單個條目,你需要來轉換到一個列表:

In [123]: 
[dict(zip(["username","first_name","lastname"], list(temp[0])))] 

Out[123]: 
[{'first_name': 'myFirstname', 
    'lastname': 'myLastname', 
    'username': 'myUsername'}] 

在我的代碼上面的例子,它只是有一個條目,所以在一般情況下,你需要遍歷任何session.query().all()返回並填充您的字典。

+0

耶的方式,該臨時[0]在我的情況應該是一個對,如果有多個元組出現,得到它:'[字典(郵政編碼((「用戶名」 ,「firstname」,「lastname」),y))for y in x]' – zPrima

+0

對不起,我的臨時工在我的IDE中是這樣的'temp = [('myUsername','myFirstname','myLastname')]'so在你的情況下,你需要迭代從'session.query()。all()'返回的結果 – EdChum

3
row = session.query(User.username, User.first_name, User.last_name).all() 
as_dict = dict(zip(row.keys(), row))