Python3操作SQLite3无法将数据持久化写入磁盘问题求助
问题解决:Python操作SQLite数据未写入磁盘的原因
你遗漏了事务提交步骤。SQLite的Python sqlite3 模块默认会开启事务,所有写入类操作(如INSERT、CREATE TABLE)都需要手动提交才能真正持久化到磁盘文件。
修改方案
在执行完所有写入操作后,调用connection.commit()提交事务即可。修改后的代码如下:
import sqlite3 connection = sqlite3.connect("aquarium.db") print(connection.total_changes) cursor = connection.cursor() cursor.execute("CREATE TABLE fish (name TEXT, species TEXT, tank_number INTEGER)") print(connection.total_changes) cursor.execute("INSERT INTO fish VALUES ('Sammy', 'shark', 1)") cursor.execute("INSERT INTO fish VALUES ('Jamie', 'cuttlefish', 7)") # 提交事务,将内存中的修改写入磁盘 connection.commit() print(connection.total_changes) rows = cursor.execute("SELECT name, species, tank_number FROM fish").fetchall() print(rows) connection.close()
原因说明
首次运行时,你执行的插入和建表操作仅存在于当前连接的内存事务中,未提交的事务会在连接关闭时自动回滚,因此磁盘文件中不会保留这些数据。第二次运行时自然查询不到任何内容。加上commit()后,事务会被持久化到磁盘,后续再运行查询代码就能获取到之前插入的数据。
内容的提问来源于stack exchange,提问作者M.Schnick
相关产品推荐
相关产品推荐

