python里sqlite使用或不使用游标有什么区别?

LeeLee
  • 72
import sqlite3

conn = sqlite3.connect('db.sql')
c = conn.cursor()
c.execute(...)
c.close()
conn.commit()
conn.close()

import sqlite3

conn = sqlite3.connect('db.sql')
conn.execute(...)
conn.commit()
conn.close()

区别在哪?什么情况需要使用cursor?

回复
阅读 387
1 个回答
✓ 已被采纳

你的问题和这个问题一模一样: https://stackoverflow.com/que...

简单来说,根据官方文档的描述(https://docs.python.org/3/lib...)

This is a nonstandard shortcut that creates a cursor object by calling the cursor() method, calls the cursor’s execute() method with the parameters given, and returns the cursor.

也就是个简单的快捷方式而已,而且是nonstandard shortcut

至于为什么使用游标(cursor),这是数据库底层普遍采用的一个概念。假想你的数据表非常庞大,远远超过你的内存容量,你觉得你一条select * from table你的内存吃得消吗?因此Cursor就是一种流式处理的概念,并不需要一次性把所有查到的数据全部读取到内存中,通过游标的游动将读取到这部分的数据缓冲到buffer中,交给你的程序处理,处理完毕再游动到下一条记录,如此反复,即可避免内存爆掉。

如果你有流式处理的经验的话,应该会很容易理解这个模式。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏