Я работал над моим приложением с графическим интерфейсом и заметил, что pymysql работает немного медленно, поэтому я провел небольшое исследование и выяснил, что mysqlclient (MySQLdb) работает намного быстрее.
так что я пошел и взял mysqlclient, используя 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 нет?