进程已完成,退出代码为 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))
我曾尝试使用同一代码从两个不同位置更新数据库。
第一个作品是在
__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))