SQLite 清空表数据并将自增量归0
HDUZN

在普通的SQL中,实现如题这个只需要通过truncate [tablename]就能实现,但在SQLite中,没有truncate,所以需要分2步实现。

比如要清空test表中的所有记录数据

test表中数据如下(其中id是自动增加的):

id code name
1 213122 张三
2 213124 李四
3 213125 王五

1、清空表数据

清空test表的SQL语句是:

1
delete from test

2、自增量归0

当SQLite数据库中 表中包含自动增加类型的字段后,会自动建立一个名为 sqlite_sequence 的表。这个表包含两个字段:name 和 seq。

  • name:表示记录自增的表名(即 tablename);
  • seq:记录当前的序号(下一条记录就是当前序号+1)

所以,当清空表中记录后,如果没有把这个自增的序号归0,添加下一条记录的时候,序号会从之前的数+1。

自增量归0的SQL语句是:

1
update sqlite_sequence set seq = 0 where name = 'test'

3、python代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
import sqlite3
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
table_name = 'test'

sql1 = 'delete from ' + table_name
cursor.execute(sql1)
sql2 = 'update sqlite_sequence set seq = 0 where name = ' + "'" + table_name + "'"
cursor.execute(sql2)

cursor.close()
conn.commit()
conn.close()
  • 本文标题:SQLite 清空表数据并将自增量归0
  • 本文作者:HDUZN
  • 创建时间:2021-02-07 20:57:00
  • 本文链接:http://hduzn.cn/2021/02/07/SQLite清空表数据并将自增量归0/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论