You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python+Tkinter对接MySQL 删除不存在数据无错误提示问题

问题原因

DELETE语句执行时只要语法正确就不会报错,哪怕WHERE条件没有匹配到任何记录,只会返回0条受影响行数。原代码没有校验操作实际影响的记录数,因此不管输入的名称是否存在,都会触发删除成功提示。另外原代码用字符串拼接构造SQL存在注入风险,修复时一并处理。

修复后完整代码
from tkinter import *
import tkinter as tk
from tkinter import filedialog
import mysql.connector
from tkinter import messagebox, simpledialog
from tkinter.messagebox import askokcancel, showinfo, WARNING

db = mysql.connector.connect(
    host="localhost",
    user="admin",
    passwd="test",
    database="dbpath"
)

mycursor = db.cursor()

mycursor.execute("CREATE DATABASE IF NOT EXISTS dbpath")
mycursor.execute(
    "CREATE TABLE IF NOT EXISTS filepaths (id INT AUTO_INCREMENT PRIMARY KEY, path VARCHAR(255), name VARCHAR(255))")


def confirmDeleteOne():
    ROOT = tk.Tk()
    ROOT.withdraw()

    USER_INP = simpledialog.askstring(title="App Name",
                                      prompt="Insert the name of the app you want delete:")
    # 用户取消输入时直接返回
    if not USER_INP:
        return
    answer = askokcancel(
        title='DELETION',
        message='Are you sure?\nTHIS IS AN IRREVERSIBLE ACTION',
        icon=WARNING)

    if answer:
        # 用参数化查询替代字符串拼接,避免SQL注入
        mycursor.execute("DELETE FROM filepaths WHERE name = %s", (USER_INP,))
        db.commit()
        # 校验实际删除的行数
        if mycursor.rowcount == 0:
            showinfo(
                title='DELETION',
                message='THIS DOES NOT EXIST IN THE TABLE'
            )
        else:
            showinfo(
                title='DELETION',
                message=f'SUCCESSFULLY DELETED {USER_INP.upper()}'
            )


root = Tk()

deleteOne = Button(root, text="Delete One", command=confirmDeleteOne, bg='yellow', font="bold")
deleteOne.pack()

root.mainloop()
核心修改逻辑
  • 增加空输入判断:用户点击输入框取消按钮时直接终止流程,不执行无效数据库操作
  • 替换SQL构造方式:使用mysql连接器支持的%s占位符做参数化查询,杜绝SQL注入风险
  • 增加行数校验:执行删除并提交事务后,通过游标自带的rowcount属性获取本次操作实际删除的记录数,行数为0时弹出记录不存在的提示,行数大于0时弹出删除成功提示

内容的提问来源于stack exchange,提问作者AfterHover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:27:32