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()

sqlite数据库删除了数据,为什么文件不会变小?的更多相关文章

  1. android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

    android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        ...

  2. Android 学习笔记之如何使用SQLite数据库来保存数据...

    PS:最近一阵子都在为考试复习...坑爹的计算机网络,复习了3天,最后该不会的还是不会...明天还考英语...真蛋疼... 学习内容: 1.使用SQLite数据库来保存数据... SQLite:   ...

  3. Android调用Sqlite数据库时自动生成db-journal文件的原因

    数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...

  4. 【转】Android调用Sqlite数据库时自动生成db-journal文件的原因

    数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...

  5. SQLite Expert 删除表数据并重置自动增长列

    用下面的语句肯定是行不通的,语句不支持 truncate table t_Records 方法:1.删除表数据 2.重置自动增长列 where name='t_Records' /*name :是表名 ...

  6. [置顶] flume高并发优化——(14)解决空行停止收集数据问题,及offsets变小问题

      日志平台运行一段时间,发现日志有部分丢失,通过检查日志,发现有两个问题导致数据丢失,一个是遇到空行后,日志停止收集,还有就是kafka监控offsets时变小,通过分析代码,找到如下方法: 空行问 ...

  7. 恢复MySQL数据库删除的数据

    在日常运维工作中,对于数据库的备份是至关重要的!数据库对于网站的重要性使得我们对 MySQL 数据库的管理不容有失!然而是人总难免会犯错误,说不定哪天大脑短路了,误操作把数据库给删除了,怎么办? 下面 ...

  8. Android 开发笔记 “Sqlite数据库删除”

    1.代码方式 Context.deleteDatabase(String databaseName);//删除某一数据库 2.设置里面 进入应用程序 ,然后清除数据就ok了

  9. Mysql数据库删除重复数据

    最近因为发现数据库中的表有脏数据,需要维护.这些脏数据就是重复数据,需要将其删除. 现假设有一张test表,主键字段为num,还有id,one,two三个字段.假设id规定只能有一条记录(即需要为id ...

  10. iOS-防止向SQLite数据库中插入重复数据记录:

    原则:先检测该数据库的指定表中,是否已经存在我们要插入的这条数据记录,若已经存在,则不插入这条数据记录(即忽略此次插入操作),若尚不存在,才插入这条数据记录(即才执行此次插入操作) 我们这里使用的是F ...

随机推荐

  1. Datahub稳定版本0.10.4安装指南(独孤风版本)

    大家好,我是独孤风,大数据流动的作者. 曾几何时,我在第一次安装JDK环境的时候也遇到了不小的麻烦,当时还有朋友就因为这个环境问题觉得自己根本不是编程的料,选择了放弃.当时有个段子说,"如果 ...

  2. [nginx]lua读取请求体

    前言 nginx默认不读取请求体的数据,但可以通过$request_body内置变量来获取.$request_body存在内存中,如果它的字节大小超过nginx配置的client_body_buffe ...

  3. 解决linux系统的kdump服务无法启动的问题

    **问题:项目麒麟系统服务器的kdump服务无法启动,没有相关日志无法定位问题.** 1.查看服务状态是关闭的,重启系统也无法启动 systemctl status kdump 2.修改grub参数 ...

  4. Anaconda+PyCharm+Pytorch/tensorflow环境配置个人总结

    Anaconda是一个非常方便的python版本管理工具,可以很方便地切换不同版本的Python进行测试.同时不同版本之间也不存在相互的干扰. PyCharm是一款常见的Python IDE,pyto ...

  5. Java - ReentrantLock锁分析

    Java - JUC核心类AbstractQueuedSynchronizer(AQS)底层实现 一.  AQS内部结构介绍 JUC是Java中一个包   java.util.concurrent . ...

  6. 使用 Python ssh 远程登陆服务器的最佳方案

    在使用 Python 写一些脚本的时候,在某些情况下,我们需要频繁登陆远程服务去执行一次命令,并返回一些结果. 在 shell 环境中,我们是这样子做的. sshpass -p ${passwd} s ...

  7. 4-MySQL数据库的常用操作

    在MySQL数据库中,增删改查操作是指对数据进行添加.删除.查询和修改的操作.这些操作在数据库管理和维护中非常重要,可以帮助数据库管理员和开发人员有效地管理数据和实现各种复杂的数据处理需求. 添加数据 ...

  8. rnacos实现raft和类distro协议,支持集群部署

    1. rnacos 简介 rnacos是一个用rust实现的nacos服务. rnacos是一个轻量. 快速.稳定.高性能的服务:包含注册中心.配置中心.web管理控制台功能,支持单机.集群部署. r ...

  9. C#开源、功能强大、免费的Windows系统优化工具 - Optimizer

    前言 今天给大家推荐一款由C#开源.功能强大.免费的Windows系统优化工具 - Optimizer. 工具介绍 Optimizer是一款功能强大的Windows系统优化工具,可帮助用户提高计算机性 ...

  10. IP协议:连接你我,掌握互联网的关键

    IP 基本认识 在之前的章节中,我们已经详细介绍了应用层和传输层的相关概念和原理,了解了进程之间如何进行可靠的数据传输.我们知道,传输层的头部包含了进程所使用的端口信息,这是为了确保数据能够正确地传递 ...