当插入失败时,autoincrement 的值会自动增加,因此会导致 id 值跳跃。可以使用以下代码在插入之前获取当前 autoincrement 的值,并在插入失败时将其设置回去。
示例代码:
import sqlite3
def insert_data(cursor, data):
cursor.execute("SELECT seq FROM sqlite_sequence WHERE name='table_name'")
current_id = cursor.fetchone()[0]
try:
cursor.execute("INSERT INTO table_name (column1, column2) VALUES (?, ?)", data)
except:
cursor.execute("UPDATE sqlite_sequence SET seq=? WHERE name='table_name'", (current_id,))
注意,上述代码中的 table_name 和 column1、column2 应该替换成实际的表名和列名。