sqlite3删除数据所在id的一行数据,__self__构造一个类,重新排序id的顺序
时间: 2024-04-30 20:22:36 浏览: 11
以下是一个示例代码,假设数据表名为"mytable",id列名为"id":
```python
import sqlite3
class MyDB:
def __init__(self, db_file):
self.conn = sqlite3.connect(db_file)
def delete_data_by_id(self, table_name, id_val):
# 删除指定id的数据
self.conn.execute(f"DELETE FROM {table_name} WHERE id=?", (id_val,))
self.conn.commit()
# 重新排序id的顺序
self.reorder_id(table_name)
def reorder_id(self, table_name):
# 获取id列的最大值
max_id = self.conn.execute(f"SELECT MAX(id) FROM {table_name}").fetchone()[0]
# 构造SQL语句,将id重新排序
sql = f"UPDATE {table_name} SET id=id-1 WHERE id>?"
for i in range(max_id):
self.conn.execute(sql, (i,))
self.conn.commit()
def __del__(self):
self.conn.close()
# 示例用法
db = MyDB("mydatabase.db")
db.delete_data_by_id("mytable", 3)
```
在以上示例代码中,我们定义了一个名为"MyDB"的类,它封装了与SQLite数据库的交互操作。其中"delete_data_by_id"方法用于删除指定id的数据,并调用"reorder_id"方法重新排序id的顺序。"reorder_id"方法首先获取id列的最大值,然后构造SQL语句,将id重新排序。最后,我们在示例用法中创建了一个"MyDB"对象,并调用"delete_data_by_id"方法删除了id为3的行,并重新排序了id的顺序。