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?
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?
4 回答4.4k 阅读✓ 已解决
5 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
你的问题和这个问题一模一样: https://stackoverflow.com/que...
简单来说,根据官方文档的描述(https://docs.python.org/3/lib...)
也就是个简单的快捷方式而已,而且是nonstandard shortcut。
至于为什么使用游标(cursor),这是数据库底层普遍采用的一个概念。假想你的数据表非常庞大,远远超过你的内存容量,你觉得你一条
select * from table
你的内存吃得消吗?因此Cursor
就是一种流式处理的概念,并不需要一次性把所有查到的数据全部读取到内存中,通过游标的游动将读取到这部分的数据缓冲到buffer中,交给你的程序处理,处理完毕再游动到下一条记录,如此反复,即可避免内存爆掉。如果你有流式处理的经验的话,应该会很容易理解这个模式。