让我们先从python官方给的例子开始:
要使用sqlite3 这个模块,必须先创建一个 Connection 对象,它代表数据库。下面例子中,数据将存储在 example.db 文件中:
import sqlite3
conn = sqlite3.connect('example.db')
当有了 Connection 对象后,你要创建一个 Cursor 游标对象,然后调用它的 execute() 方法来执行 SQL 语句:
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
d=c.execute('''SELECT x FROM table_1''')
d是可以被迭代遍历的查询结果集,比如用于for i in d:
,d只能遍历一次。
当d的迭代遍历没有完成,此时如果用游标查询,例如:e=c.execute('''SELECT y FROM table_2''')
,则上一次的游标结果集d将被破坏,新的结果集e生成,d将无法再继续迭代遍历。
如何解决这个问题?
一个非标准的解决办法是借用Connection 对象的execute() 能力,例如:
e=conn.execute('''SELECT y FROM table_2''')
游标d和e可分别迭代遍历,没有冲突。