如何打印sqlite3数据库内容?代码输出Cursor对象该如何解决
问题原因
你当前的代码在循环中错误打印了游标对象c而非遍历得到的每行数据row,所以输出的都是游标对象的内存地址。
正确修改方案
直接把循环内的打印对象从c改为row即可,修改后的完整代码如下:
import sqlite3 # 连接数据库 conn = sqlite3.connect('database.db') c = conn.cursor() c.execute("SELECT * FROM records") # 遍历游标返回的每行数据,直接打印row for row in c: print(row) # 操作完成后记得关闭连接 conn.close()
可选优化方案
如果需要更灵活地处理查询结果,也可以选择以下两种写法:
- 调用
fetchall()一次性取出所有结果再遍历,适合数据量不大的场景:
c.execute("SELECT * FROM records") rows = c.fetchall() for row in rows: print(row)
- 调用
fetchone()逐行读取,适合数据量较大、不想一次性加载全部数据到内存的场景:
c.execute("SELECT * FROM records") while True: row = c.fetchone() if row is None: break print(row)
内容的提问来源于stack exchange,提问作者Admia
相关产品推荐
相关产品推荐

