sqlite数据库删除了数据,为什么文件不会变小?
SQLite数据库文件的大小不会自动缩小,即使删除了其中的数据。
这是因为在SQLite中,当数据被删除时,它实际上并没有立即从磁盘上移除,而是被标记为【已删除】,
这种处理机制,被删除的数据仍然占用的空间,
标记【已删除】的作用是以后可以被新插入的数据重用。
如果想减小SQLite数据库文件的大小,你可以使用 VACUUM
命令。
VACUUM
命令会重建数据库文件,使得未使用的空间被回收,并且可以压缩数据库文件。
但是请注意,VACUUM操作可能会花费一些时间,特别是对于大型数据库。
以下是如何在SQLite中使用VACUUM命令的示例:
sql Copy code VACUUM;
这将会对当前连接的数据库进行VACUUM操作。
在python中操作:
import sqlite3 # 连接到你的数据库 conn = sqlite3.connect('your_database.db') # 创建一个游标对象 cur = conn.cursor() # 执行VACUUM命令 cur.execute('VACUUM') # 提交事务 conn.commit() # 关闭连接 conn.close()
如果你想要对特定的数据库进行VACUUM操作,你可以这样做:
sql Copy code ATTACH DATABASE 'your_database.db' AS db_name; VACUUM db_name; DETACH DATABASE db_name;
这将会附加指定的数据库,对其进行VACUUM操作,然后断开连接。
在python中操作:
import sqlite3 # 连接到你的数据库 conn = sqlite3.connect(':memory:') # 使用内存中的数据库作为例子 # 创建一个游标对象 cur = conn.cursor() # 执行ATTACH DATABASE命令 cur.execute('ATTACH DATABASE "your_database.db" AS db_name') # 执行VACUUM命令 cur.execute('VACUUM db_name') # 执行DETACH DATABASE命令 cur.execute('DETACH DATABASE db_name') # 提交事务 conn.commit() # 关闭连接 conn.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通