向SQLite数据库插入列表后调用fetchall返回空列表问题求助
问题原因
executemany执行的是插入类写操作,执行完成后游标不会绑定任何查询结果集,此时直接调用fetchall()只会返回空列表。fetchall()仅能读取最近一次执行的查询类SQL(SELECT语句)返回的结果,建表、插入、更新这类非查询操作都不会生成可供读取的结果集。
修复方法
在conn.commit()之后新增查询全表的SQL语句即可,修改后可正常运行的代码如下:
import sqlite3 conn = sqlite3.connect(":memory:") c = conn.cursor() c.execute("CREATE TABLE books (title TEXT, pages INTEGER)") books = [ ("Are You My Mother?", 72), ("The Digging-est Dog", 72), ("The Giving Tree", 66) ] c.executemany("INSERT INTO books VALUES(?,?)", books) conn.commit() # 新增查询语句 c.execute("SELECT * FROM books") data = c.fetchall() print(data)
运行修改后的代码即可输出插入的三条书籍数据。
内容的提问来源于stack exchange,提问作者user16790886
相关产品推荐
相关产品推荐

