mysql - Windows 上 PySide2 的损坏的 MySql 驱动程序?

标签 mysql qt pyside maya

我被迫尝试从 PySide 移植到 PySide2,因为我正在开发 Maya 内部使用的代码(在 Windows 7 上),而 Maya 2017 已转移到 PySide2。

PySide2 随 Maya 一起提供,但只附带与 sqlite 数据库对话的驱动程序。所以我需要告诉 Qt 一个包含 MySql 驱动程序的新 DIR,如下所示:

from PySide2 import QtWidgets
QtWidgets.QApplication.addLibraryPath("C:\temp\plugins")

此 DIR 包含一个包含驱动程序的子 sqldrivers DIR。这有效 - 当我调用 QtSql.QSqlDatabase.drivers() 时,新的驱动程序就在那里,所以我有正确的驱动程序并且正在被拾取。

然而,当我创建一个新的数据库并调用打开时:

db = QtSql.QSqlDatabase.addDatabase("QMYSQL3")
db.setDatabaseName("my_db")
db.setHostName("host")
db.setUserName("user")
db.setPassword("password")
db.open()

open 命令返回 False,数据库不可访问。我打电话:

db.lastError()

并得到:

# Result: <PySide2.QtSql.QSqlError("", "Driver not loaded", "Driver not loaded")  at 0x0000000075410C08> # 

注意:我们成功地用以前的 PySide 版本做了完全相同的事情。

其他线程提到了类似的事情,结果发现它缺少实际的 libmysql.dll,它是实际的 MySql DLL,如果丢失会导致相同的错误。但是我的系统上肯定有这个,而且它肯定在 PATH 中。它实际上是通过 PySide 成功获取的同一个文件。但是 PySide2 驱动程序不会打开与数据库的连接。

我怀疑可能是一个狡猾的司机,但想知道是否有人对此有任何经验或任何建议?

最佳答案

我有同样的错误,但是用的是 postgres。 我通过将 libpq.dll 连接器库放在我的 script.py 旁边来解决。

然后对于 mysql 它将是 libmysql.dll。

在我的例子中,我必须从 postgres 9.6 的源代码构建 libpq.dll

PySide2 似乎没有必要使用: QtWidgets.QApplication.addLibraryPath("C:\path_to\plugins")

使用: print (PySide2.QtCore.QLibraryInfo.location (PySide2.QtCore.QLibraryInfo.PluginsPath)),我可以看到路径是正确的。

一句问候

关于mysql - Windows 上 PySide2 的损坏的 MySql 驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40616256/

相关文章:

mysql - 在mysql中的存储过程中获取当前日期

mysql - 有没有办法在分组发生后限制结果?

qt - QWidget setGeometry 在不使用 QLayout 的情况下显示

qt - 按钮属性 "tooltip"有何用途?

python - PySide 可以与 Anaconda Python 3.5 一起使用吗?

mysql - 无法连接亚马逊MYSQL

PHP MySQL(i) 分页/分页帮助

sql - 当数据库查询出错时检测并处理

Python/Pyside 崩溃但没有错误信息

c++ - 如何为自定义 QLabel 实现 setWordWrap(True)?