【问题标题】:python :: MySQLdb connection fails, but pymysql doesn't. why?python :: MySQLdb 连接失败,但 pymysql 没有。为什么?
【发布时间】:2019-04-09 01:08:35
【问题描述】:

我一直在开发我的这个 GUI 应用程序,我注意到 pymysql 运行有点慢,所以我做了一些研究,发现 mysqlclient(MySQLdb) 运行得更快。

所以我去使用pip install --only-binary :all: mysqlclient获取mysqlclient

但是当我尝试使用 mysqlclient 时,我的 GUI 开始在其中包含 MySQLdb 的第一行中断。

我使用 QPushButtons 使用 pandas 从/向我的本地主机导入导出数据,在下面你会发现链接到“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 却没有?

【问题讨论】:

  • 不,我没有,。但我刚刚找到了这个dev.mysql.com/downloads/connector/c,我现在有点迷路了。
  • 没用,我试过 libmysqlclientlibmysqlclient-dev
  • 来自 python.org 的官方 python 3.6.5,带有 Vscode IDE,MySQL 8.0.13
  • 它确实支持它,在谷歌搜索中输入“MySQL支持的python版本”,它会给你所有支持的版本
  • 我已经为 python 3.6 8.0.13 安装了一个连接器/python,但仍然无法正常工作,所以我想我会坚持使用 pymysql,直到我解决这个问题,谢谢你的时间

标签: python mysql-python pymysql


【解决方案1】:

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

您可能需要降级才能使用它。

【讨论】:

  • 我没有使用 Flask,这个 GUI 是用 PyQt5 构建的。
  • 你在使用任何 ORM 吗?
  • 我使用了 sqlalchemy。但我删除了它,因为我想单独使用 mysqldb。
  • 为此我需要安装 C 库。所以这就是我要做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 2021-01-28
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
相关资源
最近更新 更多