我一直在开发我的GUI应用程序,并且我注意到pymysql的运行速度有点慢,所以我进行了一些研究,发现mysqlclient(MySQLdb)的运行速度要快得多。
所以我去了,并使用pip install --only-binary :all: mysqlclient
但是当我尝试使用mysqlclient时,我的GUI在其中包含MySQLdb的第一行开始中断。
我使用QPushButtons通过熊猫从我的本地主机导入/导出数据,下面您会找到链接到'ImportDatabaseButton'的函数:
def ImportDatabase(self):
db = self.ImportDatabaseLineEdit.text()
t = self.ImportTableLineEdit.text()
conn = MySQLdb.connect(host='localhost',user='root',password='mypass') # code breaks here.
data = pd.read_sql("SELECT * FROM %s.%s" %(db,t), con=conn)
print(data)
self.DatasetTableWidget.setRowCount(len(data.index))
self.DatasetTableWidget.setColumnCount(len(data.columns))
for indx in range(len(data.index)):
for col in range(len(data.columns)):
self.DatasetTableWidget.setHorizontalHeaderLabels(data.columns)
self.DatasetTableWidget.setItem(
indx,
col,
QtWidgets.QTableWidgetItem(str(data.iat[indx, col])))
在我使用conn = pymysql.connect(host='localhost',user='root',password='mypass')
之前,我没有问题,但是使用MySQLdb
时,会出现此错误:
C:\Users\pc\Desktop\SQL_GUI>python c:/Users/pc/Desktop/SQL_GUI/testmw.py
Traceback (most recent call last):
File "c:/Users/pc/Desktop/SQL_GUI/testmw.py", line 964, in ImportDatabase
conn = MySQLdb.connect(host='localhost',user='root',password='mypass')
File "C:\Users\pc\AppData\Local\Programs\Python\Python36\lib\site-packages\MySQLdb\__init__.py", line 86, in Connect
return Connection(*args, **kwargs)
File "C:\Users\pc\AppData\Local\Programs\Python\Python36\lib\site-packages\MySQLdb\connections.py", line 204, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2059, <NULL>)
我也尝试过conn = MySQLdb.connect('localhost', 'root','mypass')
,没有任何改变,同样的错误。
那么为什么pymysql像超级按钮一样起作用,而MySQLdb却不行呢?
答案 0 :(得分:0)
Mysql版本8与flask-sqlalchemy不兼容。
您可能需要降级才能使其正常工作。