Сбой соединения python :: MySQLdb, а pymysql - нет. Зачем? - PullRequest
0 голосов
/ 05 ноября 2018

Я работал над моим приложением с графическим интерфейсом и заметил, что 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 нет?

1 Ответ

0 голосов
/ 05 ноября 2018

Mysql Версия 8 не совместима с flask-sqlalchemy.

Возможно, вам придется понизить версию, чтобы она заработала.

...