【发布时间】: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,我现在有点迷路了。
-
没用,我试过 libmysqlclient 和 libmysqlclient-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