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

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

遍歷完后就變空了,請問是什么原因造成的呢,如何解決?

遍歷完后就變空了,請問是什么原因造成的呢,如何解決?

白板的微信 2023-04-08 21:17:17
例如:db = web.database(dbn='sqlite', db='data.db') #設置數據庫連接q = db.select('customer_order', order='id DESC') #返回數據得到結果后,查詢q[1]返回<Storage {'customer_name': u'\u5e7f\u4e49', 'update_time': None, 'create_time': u'2012-03-05 22:44:07.428652', 'description': u'nice', 'id': 4}>再查詢q[1]返回Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "web/utils.py", line 669, in __getitem__     raise IndexError, "already passed "+str(i) IndexError: already passed 1
查看完整描述

2 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

Python 中的迭代器本來就是一次性的,無論是生成器表達式還是 yield 都是這樣。如果你需要多次使用,應該先用 list 工廠函數將迭代器轉換成列表。當然,轉換之后迭代器就空了,但是數據保存到了列表中。

查看完整回答
反對 回復 2023-04-11
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

所以這就是需要ORM的重要性啦
不要直接把DB select的結果返回 而是包裝成一個model的Object返回 
可以用第三方的 或者簡單就自己定義對象和set值
這樣就可以避免這種迭代一次的情況,更重要的是,當你這個db方法被很多地方調用的時候,如果要加一點字段,就很惡心了,到處改,封裝成model再返回,就只需要改一個地方啦,把修改集中。

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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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