初學Python,菜鳥一枚看到Python中的fetchall可以簡寫成如下方式:infos = [(dict(name=row[1], sex=row[2],age=row[3]) for row in cur.fetchall())]錯誤信息補充
2 回答

30秒到達戰場
TA貢獻1828條經驗 獲得超6個贊
首先這個問題寫的不是很清楚,這個fetchall/fetchone應該是sqlite模塊的操作,而不是所謂的python中:-)。然后fetchall/fetchone的差異僅僅是一個獲取所有記錄,一個獲取單條記錄,所以這兩種沒有什么區別,這里的寫法也是一致的,BTW這個完全可以自己測試下
=====================
因為fetchall返回的是這樣的格式
([a,b,c],[e,f,g],[g,i,j])
所以你使用
for?row?in?cur.fetchall()
可以取到
[a,b,c]和[e,f,g]和[h,i,j]
而fetchone得到的是
(a,b,c)
所以要得到這樣的效果可以,注意最后一個,:
[dict(name?=?row[0],...)?for?row?in?[cur.fetchone(),]]

侃侃無極
TA貢獻2051條經驗 獲得超10個贊
fetchone()
返回的tuple
為單獨一行結果集,對其迭代相當于在遍歷一行中的各列
一般只在處理確定只有一行數據的情景下用
多行的情況,還是用fetchall
,如果非要用,大概這樣
rs = []while True: r = cur.fetchone() if not r: break d = dict(zip(('a', 'b'), r)) rs.append(d)
很丑陋,對不對
添加回答
舉報
0/150
提交
取消