db.cursor.execute()的奇怪行为

时间:2017-08-04 04:16:14

标签: python sqlite ipython

所以我正在尝试学习sqlite以及如何在Ipython笔记本中使用它,我有一个名为db的sqlite对象。

我正在执行此命令:

  

SEL =" " " SELECT * FROM候选人;" " "

     

C = db.cursor()。执行(SEL)

当我在下一个单元格中执行此操作时:

  

c.fetchall()

它会打印出所有行但是当我再次运行同一个命令时,即我运行 c.fetchall()再次它没有打印出任何内容,它只显示两个方括号,里面没有任何内容。但是,当我运行上面的第一个命令,即c=db.cursor().execute(sel),然后运行db.fetchall()时,它再次打印出表格。

这很奇怪,我不明白,这是什么意思?

2 个答案:

答案 0 :(得分:1)

这是因为.fetchall()使你的光标(c)指向最后一行。 如果你想再次选择你的数据库,你应该再次执行。

或者,如果您只想再次使用获取的数据,则可以将c.fetchall()存储到变量中。

答案 1 :(得分:0)

它返回空列表,因为游标指向表的最后一行。

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

c.fetchall()

如文档中所示(此例程获取查询结果的所有(剩余)行,返回列表。当没有行可用时返回空列表。)