def ButtonDeleteHaveClicked(self, PList1, PEdit1): # 获取选择的行索引 selected_row = PList1.currentRow() if selected_row != 1: # 获取选中行的数据 item = PList1.takeItem(selected_row) data = item.text().split(",") # 连接数据库 conn = pymysql.connect(host='localhost', # 本地数据库 user='root', password='020430swkswk', db='book', charset='utf8') cur = conn.cursor() cur.execute("DELETE FROM books WHERE id = %s", (data[0],)) # 执行删除语句并提交更改 conn.commit() # 关闭游标和数据库连接 cur.close() conn.close()这个为什么不能删除数据库里面的
时间: 2024-02-10 13:14:01 浏览: 27
这个代码段可以用于从 `books` 数据表中删除指定 `id` 的记录。如果你使用这个函数不能成功删除数据库中的记录,并且没有报错信息,那么可能是以下几个原因:
1. 数据库连接错误:请检查你的数据库连接参数是否正确,包括 `host`、`user`、`password`、`db` 等参数是否正确。
2. 数据库表名或字段名错误:请检查你的数据表名是否为 `books`,并且表中是否有名为 `id` 的字段。
3. 数据表中没有符合条件的记录:请检查你的数据库表中是否有符合条件的记录,即 `id` 等于 `data[0]`。
如果你已经检查了以上几个原因,并且仍然无法删除数据库记录,你可以尝试在函数中添加一些调试输出来查看函数执行过程中的变量值和状态,以便更好地理解和解决问题。
相关问题
import sys import serial from PyQt5.QtWidgets import QMainWindow, QApplication from aaa_main import Ui_MainWindow from aaa_child import Ui_ChildWindow import serial.tools.list_ports class Main(QMainWindow, Ui_MainWindow): def __init__(self): super(Main, self).__init__() self.setupUi(self) self.serial = serial.Serial() self.refresh() def refresh(self): plist = list(serial.tools.list_ports.comports()) if len(plist)<=0: self.comboBox_uart.clear() self.comboBox_uart.addItem("无串口") else: self.comboBox_uart.clear() for i in range(0, len(plist)): plist_0 = list(plist[i]) self.comboBox_uart.addItem(str(plist_0[0])) def btn_uart_cb(self): if not self.serial.isOpen(): self.btn_Open.setText("关闭串口") portName = self.comboBox_uart.currentText() baud = self.comboBox_baud.currentText() self.serial = serial.Serial(portName, baud) else: self.serial.close() self.btn_Open.setText("打开串口") class Child(QMainWindow, Ui_ChildWindow): def __init__(self): super(Child, self).__init__() self.setupUi(self) self.pushButton.clicked.connect(self.close) def Open(self): self.show() if __name__ == "__main__": app = QApplication(sys.argv) main = Main() child = Child() main.show() main.pushButton.clicked.connect(child.Open) sys.exit(app.exec_())
这段代码看起来比之前的代码没有问题,但是需要确认 `aaa_main.py` 和 `aaa_child.py` 这两个文件中定义的 `Ui_MainWindow` 和 `Ui_ChildWindow` 类是否存在,以及是否正确导入。如果这些类不存在或者导入错误,也会导致程序崩溃。另外,如果你在程序运行过程中出现错误,可以查看控制台输出的错误信息,以便更好地定位问题。
def refresh(self): #查询可用串口 plist = list(serial.tools.list_ports.comports()) if len(plist)<=0: self.comboBox_uart.clear() self.comboBox_uart.addItem("无串口") else: # 把所有的可用的串口输出到comboBox中去 self.comboBox_uart.clear() for i in range(0, len(plist)): plist_0 = list(plist[i]) self.comboBox_uart.addItem(str(plist_0[0]))使用该函数时,combobox_uart控件无任何显示
您的代码看起来没有问题,但是我猜测问题可能在于您没有在应用程序中正确地调用 refresh() 函数。您需要在适当的时候调用 refresh() 函数来更新 comboBox_uart 控件。
例如,您可以在窗口的初始化函数中调用 refresh() 函数来确保在应用程序启动时更新可用串口列表。或者,您可以在用户执行某些操作(例如按下按钮)时调用 refresh() 函数来手动更新可用串口列表。
如果您已经在应用程序中适当地调用了 refresh() 函数,那么您可能需要检查一下串口是否真的可用。您可以尝试在控制台中打印出 plist 列表来查看可用的串口。另外,您还可以尝试使用其他串口工具来检查串口是否能够正常连接。