python :: MySQLdb连接失败,但是pymysql没有。为什么?

时间:2018-11-05 16:27:17

标签: python mysql-python pymysql

我一直在开发我的GUI应用程序,并且我注意到pymysql的运行速度有点慢,所以我进行了一些研究,发现mysqlclient(MySQLdb)的运行速度要快得多。

所以我去了,并使用pip install --only-binary :all: mysqlclient

获取了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 :(得分:0)

Mysql版本8与flask-sqlalchemy不兼容。

您可能需要降级才能使其正常工作。