def delete_text(): # 获取用户选定文本的起始和结束索引值 start_index = text.index("sel.first") end_index = text.index("sel.last") # 将索引值转换为行号和列号 start_line, _ = map(int, start_index.split(".")) end_line, _ = map(int, end_index.split(".")) # 提取行号,然后使用 get() 方法获取该行的文本内容 selected_text = text.get(f"{start_line}.0", f"{end_line}.end") # 连接到数据库 conn4 = sqlite3.connect('exp11.db') cursor = conn4.cursor() # 构造 SQL 查询语句,获取要删除行的位置 query = f"SELECT f_id FROM table11 WHERE f_id='{selected_text}'" cursor.execute(query) row = cursor.fetchone() # 构造 SQL 删除语句,删除该行 if row: cursor.execute(f"DELETE FROM table11 WHERE f_id='{selected_text}'") # 提交更改 conn4.commit() # 提交更改并关闭数据库连接 cursor.close() conn4.close() 这段代码执行删除命令后为什么数据库中的数据没有删除
时间: 2024-02-29 16:55:20 浏览: 84
sel_and_del 使用鼠标从 2D 图中交互选择和删除点:左键单击选择一个点,右键单击取消选择它。-matlab开发
根据你提供的代码,可能是因为 `selected_text` 变量中存储的是从文本框中选中的文本,而不是从数据库中查询到的 `f_id` 值。因此,可能出现了查询结果不符合预期的情况。
为了解决这个问题,你需要确认 `query` 查询语句是否正确,可以在执行 `cursor.execute(query)` 前添加一行代码,将 `query` 打印出来,以确认其是否符合预期。同时,你需要确认从数据库中查询到的 `f_id` 值是否正确,可以添加一行代码将其打印出来。如果查询到的 `f_id` 值正确,那么你可以确认是删除语句有问题,可以添加一行代码将其打印出来以确认。
另外,你还需要确认你的代码是否执行成功,可以在执行 `conn4.commit()` 后添加一行代码,将删除语句的执行结果打印出来。如果执行结果是 `1`,表示删除成功,否则表示删除失败。
阅读全文