亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果是fetchone,有沒有類似的簡寫?

如果是fetchone,有沒有類似的簡寫?

當年話下 2023-04-14 18:14:39
初學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(),]]


查看完整回答
反對 回復 2023-04-17
?
侃侃無極

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)

很丑陋,對不對


查看完整回答
反對 回復 2023-04-17
  • 2 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號