2017-08-04 60 views
0

所以我試圖學習sqlite和如何從Ipython筆記本使用它,並且我有一個名爲db的sqlite對象。怪異的行爲通過db.cursor.execute()

我執行這個命令:

SEL = 「 」「 SELECT * FROM候選人;」 「」

C = db.cursor()執行(SEL)

,當我爲此在下一單元:

c.fetchall()

它確實打印出所有的行,但是當我再次運行這個相同的命令時,即我再次運行 c.fetchall()它不會打印出任何東西,它只顯示兩個方括號,裏面沒有任何內容。但是當我運行上面的第一個命令,即c=db.cursor().execute(sel),然後運行db.fetchall()它再次打印出表格。

這很奇怪,我不明白,這是什麼意思?

回答

1

這是因爲.fetchall()使您的光標(c)指向最後一行。 如果你想再次選擇你的DB,你應該再次執行。或者,如果您只是想再次使用您提取的數據,則可以將c.fetchall()存儲到您的變量中。

0

它返回空列表,因爲光標指向表的最後一行。

sel=" " " SELECT * FROM candidates;" " " 
c=db.cursor().execute(sel) 

c.fetchall() 

號文件給出的(這個程序獲取查詢結果的所有(剩餘)行,返回一個列表。如果沒有行可用,則返回一個空列表。)