首页 > 数据库 >sqlite删除数据表

sqlite删除数据表

时间:2024-03-27 10:58:05浏览次数:27  
标签:sqlite 删除 数据库 SQLite cursor 数据表 VACUUM conn

1.如何删除表

在SQLite中,删除表的SQL语句是DROP TABLE。如果你想要在Python中使用SQLite库(如sqlite3)来删除一个表,你可以按照以下步骤操作:

  1. 连接到SQLite数据库。
  2. 创建一个cursor对象。
  3. 执行DROP TABLE语句。
  4. 提交事务。
  5. 关闭cursor和连接。

下面是一个删除表的Python示例代码:

import sqlite3

# 连接到SQLite数据库
# 如果数据库不存在,会自动在当前目录创建
conn = sqlite3.connect('example.db')

# 创建一个cursor对象
cursor = conn.cursor()

# 要删除的表名
table_name = 'my_table'

# 执行删除表的SQL语句
cursor.execute(f'DROP TABLE IF EXISTS {table_name}')

# 提交事务
conn.commit()

# 关闭cursor和连接
cursor.close()
conn.close()

请注意,在执行DROP TABLE之前,务必要确保已经备份了任何重要的数据,因为这个操作不可逆,一旦执行,表中的所有数据都会丢失。

2.sqlite删除表后db文件大小没有变化

在SQLite中,当你删除一个表时,该表所占用的空间并不会立即被释放回文件系统,而是被标记为可重用。这意味着SQLite数据库文件(.db)的大小可能不会立即减小,即使你已经删除了其中的一些数据或整个表。

SQLite使用一种称为“文件空间重用”的机制来管理磁盘空间。当你删除数据或表时,SQLite会保留这些空间以备将来使用,而不是立即将它们返回给操作系统。这样,如果以后你需要添加更多的数据,SQLite可以重用这些已标记的空间,而不需要重新分配磁盘空间。

如果你希望减小SQLite数据库文件的大小,你可以采取以下措施之一:

  1. VACUUM命令:SQLite提供了一个VACUUM命令,它可以重新整理数据库文件,释放未使用的空间并减小文件大小。你可以通过执行VACUUM; SQL命令或使用Python的SQLite库来调用它。
    import sqlite3
    
    # 连接到SQLite数据库
    conn = sqlite3.connect('example.db')
    
    # 创建一个cursor对象
    cursor = conn.cursor()
    
    # 执行VACUUM命令
    cursor.execute('VACUUM;')
    
    # 提交事务
    conn.commit()
    
    # 关闭cursor和连接
    cursor.close()
    conn.close()

    执行VACUUM命令后,数据库文件的大小应该会减小,因为它会删除未使用的空间并将这些空间返回给操作系统。

  2. 重新创建数据库:如果你不关心保留现有的数据库结构或数据,另一种方法是创建一个新的数据库,并将需要的数据导入到新数据库中。这种方法可以确保新的数据库文件是最优化的,并且不包含任何未使用的空间。
  3. 请注意,在执行VACUUM命令之前,最好备份你的数据库,以防万一出现任何问题。此外,VACUUM命令可能需要一些时间来执行,具体取决于数据库的大小和复杂性。

    最后,还要注意的是,即使执行了VACUUM命令,SQLite文件仍然可能不会立即减小到预期的大小,因为文件系统可能会保留一些块以供将来使用,或者操作系统可能没有立即回收这些空间。在某些情况下,你可能需要等待一段时间或重启计算机才能看到文件大小的显著变化。

标签:sqlite,删除,数据库,SQLite,cursor,数据表,VACUUM,conn
From: https://blog.csdn.net/jolin678/article/details/137045006

相关文章

  • Python数据库模块(sqlite3,SQLite3)
    一、sqlite命令创建数据库:在控制台sqlite3name.databases查看数据库.tables查看表格名databaseName.dump>dumpName将数据库存在文本文件dumpName中,恢复就用databaseName<dumpName;attachdatabase......
  • 【K8s】scale缩容时删除指定pod
    PodDeletionCost是k8s1.22后默认开启的新特性,以annotation的方式作用于Pod,表示这个pod的“删除代价”,代价越小的pod删除优先级相对越高。因此在scale前给需要删除的pod加上annotation即可。//ActivePodsWithRanksisasortablelistofpodsandalistofcorresponding//r......
  • Kafka Connect 自定义Sink Connector实现在数据同步时增加时间戳字段和假删除功能
    1.情景展示以debezium为例,结合kafka很容易就能实现两个数据库表与表之间的数据同步问题。但是,现在甲方有这样的需求:其一,在源表数据同步至目标表时,目标表增加一个时间戳字段(就是我们通常意义上讲的last_update_time),无论是insert还是update操作,都在此字段插入系统当前时间。用......
  • 使用PTK卸载数据库时删除用户失败怎么办?
    使用PTK卸载数据库时删除用户失败怎么办?背景介绍:PTK(ProvisioningToolkit)是一款针对MogDB数据库开发的软件安装和运维工具,旨在帮助用户更便捷地安装部署MogDB数据库。如果用户想要运行MogDB或者MogDB的相关组件时,仅需要执行一行命令即可实现。PTK支持安装MogDB......
  • c# 操作SQLite数据库
    1、在nuget工具中安装“System.Data.SQLite”插件;2、将数据库文件放在DEBUG目录下(表文件可以通过navicate建立也);3、创建DbHelperSQLite.cs文件,指定数据库路径等信息;usingSystem;usingSystem.Collections;usingSystem.Data.Common;usingSystem.Data;usingSystem.Da......
  • 文件删除原理
    一、删除原理Linux通过link数量控制文件删除的,只有当一个文件i_count和i_link都为0,文件才被删除。i_count为当前文件被调用的数量(内存引用计数器,被进程调用时增加);i_link为介质连接数量(磁盘引用计数器,创建硬链接时增加)。rm删除文件改变的是i_link数。二、查询方法 1、i......
  • ORACLE 在缺少主键ID的情况下删除重复数据,只保留一行
    有时候因未进行数据验证或其他特殊场景,导致数据表中出现重复的数据,需要对重复数据进行删除,并且只保留其中一条。一、当数据表存在主键时,可使用ROW_NUMBER进行排序后删除,参考脚本如下:  删除带有主键的重复数据DELETEFROMDUPLICATES_TABLEWHEREIDIN(SELECTID......
  • 【macOS】删除“登陆项 - 允许在后台”卸载残留项目
    ✨“登陆项-允许在后台”更新了macOSVentura后,系统设置页面大改除了用户登陆项管理外还可以更改“允许在后台”项目然而许多软件卸载后在“登陆项-允许在后台”会出现残留项目下面给出解决方案✨删除卸载残留“允许在后台”项目Terminal运行以下命令sudo--bash-c......
  • 26.删除有序数组中的重复项
    自己写的,双指针,用tail指针指向不重复有序数组的末尾元素,用index指针进行遍历数组,遇到和末尾元素不一样的元素,放到tail+1的位置,然后tail指针加1classSolution{publicstaticintremoveDuplicates(int[]nums){inttail=0;intindex=0;in......
  • 怎么批量删除docker没有使用的镜像 清理磁盘空间
    要批量删除没有使用的Docker镜像并清理磁盘空间,您可以按照以下步骤执行操作:1.查看当前使用的Docker镜像列表,可以使用以下命令:dockerimages2.确认需要删除的镜像是没有被使用的。如果您确定要删除某个镜像,请记录镜像的REPOSITORY和TAG。3.执行以下命令来删除指定镜......