进程已完成,退出代码为 1073741845,同时将数据保存到 mysql

Process finished with exit code 1073741845 while saving data to mysql

我曾尝试使用同一代码从两个不同位置更新数据库。 第一个作品是在 __init__(self) 它只是添加来检查更新是否抛出任何错误。

第二个抛出这个错误。 onClickAction_SAVE(self) 就是发生这种情况的地方。 错误: 进程已完成,退出代码为 1073741845



from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from myform import Ui_Form
from connect_to_db import Database
import pandas as pd

class AppWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.ui.lineEdit.textChanged.connect(self.touppercase)
        self.ui.lineEdit_2.setPlaceholderText("Don't mind me.")

        self._db = Database('accounts')
        self._currrow = 0


        self._df = pd.read_sql_query("SELECT * FROM test1", self._db.connection)
        self._maxrows = len(self._df.index)-1

        self.ui.totalrecords.display(len(self._df.index))


        self.ui.lineEdit.setText(self._df.at[self._currrow, 'name'])
        self.ui.lineEdit_2.setText(self._df.at[self._currrow, 'guid'])
        self.ui.currCounter.display(self._currrow + 1)

        self.ui.btnFirst.clicked.connect(self.onClickAction_FR)
        self.ui.btnPrev.clicked.connect(self.onClickAction_PR)
        self.ui.btnNext.clicked.connect(self.onClickAction_NR)
        self.ui.btnLast.clicked.connect(self.onClickAction_LR)
        self.ui.btnSave.clicked.connect(self.onClickAction_SAVE)

        keyvalue = 8
        namevalue = 'Record 7---'
        stmt = 'UPDATE test1 SET name = %s WHERE id = %s'
        values = (namevalue, keyvalue)
        print((stmt, values))
        try:
            self._db.execute(stmt, values)
        except:
            print("Oops!", sys.exc_info()[0], "occured.")
        self._db.commit()

    def touppercase(self, text):
        # print(text)
        cursorpos = self.ui.lineEdit.cursorPosition()
        self.ui.lineEdit.setText(text.upper())
        self.ui.lineEdit.setCursorPosition(cursorpos)

    @pyqtSlot()
    def onClickAction_FR(self):
        self._currrow = 0
        self.ui.lineEdit.setText(self._df.at[self._currrow, 'name'])
        self.ui.lineEdit_2.setText(self._df.at[self._currrow, 'guid'])
        self.ui.currCounter.display(self._currrow+1)

    @pyqtSlot()
    def onClickAction_PR(self):
        if self._currrow > 0:
            self._currrow = self._currrow - 1
            self.ui.lineEdit.setText(self._df.at[self._currrow, 'name'])
            self.ui.lineEdit_2.setText(self._df.at[self._currrow, 'guid'])
            self.ui.currCounter.display(self._currrow+1)

    @pyqtSlot()
    def onClickAction_NR(self):
        if self._currrow < self._maxrows:
            self._currrow = self._currrow + 1
            self.ui.lineEdit.setText(self._df.at[self._currrow, 'name'])
            self.ui.lineEdit_2.setText(self._df.at[self._currrow, 'guid'])
            self.ui.currCounter.display(self._currrow+1)

    @pyqtSlot()
    def onClickAction_LR(self):
        self._currrow = self._maxrows
        self.ui.lineEdit.setText(self._df.at[self._currrow, 'name'])
        self.ui.lineEdit_2.setText(self._df.at[self._currrow, 'guid'])
        self.ui.currCounter.display(self._currrow+1)


    @pyqtSlot()
    def onClickAction_SAVE(self):
        self._df.at[self._currrow, 'name'] = self.ui.lineEdit.text()
        self._df.at[self._currrow, 'guid'] = self.ui.lineEdit_2.text()
        keyvalue = self._df.at[self._currrow, 'id']
        namevalue = self._df.at[self._currrow, 'name']
        stmt = 'UPDATE test1 SET name = %s WHERE id = %s'
        values = (namevalue,keyvalue)
        self._db.execute(stmt,values)
        self._db.commit()

onClickAction_SAVE 代码有什么问题?

是否有任何原因导致数据库连接关闭或插槽中不允许更新?

问题是由于传递给查询的 64 位整数造成的 MySql不支持

仅仅改变这一行就帮助解决了问题

values = (namevalue,keyvalue)

values = (namevalue,int(keyvalue))