python - Pyqt5 MySQL 数据库连接未使用 Python3 通过工作线程打开

标签 python mysql ubuntu pyqt pyqt5

我在从 pyqt 工作线程连接到 mysql 数据库时遇到问题。

我可以通过命令行手动连接到数据库,但我的pyqt5工作线程似乎无法打开数据库。我有可用的 QMYSQL 驱动程序,并且我已临时为所有登录用户设置完全权限以排除这种情况,并且我已将用户名和密码登录设置为默认,但仍然无法连接。

简单来说,MySQL 数据库驻留在 Ubuntu 系统上,我从 Windows 10 PC 进行连接。

这是我到目前为止的代码和输出。

class Worker(QThread):

    def __init__(self):
        super(Worker, self).__init__()
        print('Opening DB')
        self.db = QtSql.QSqlDatabase().addDatabase("QMYSQL")
        print('Driver available? ', self.db.isDriverAvailable("QMYSQL"))
        self.db.setHostName(192.168.56.1)
        self.db.setDatabaseName('Automation_DB')
        self.db.setUserName('root')
        self.db.setPassword('root')
        self.db.open()
        self.query = QSqlQuery(self.db)
        self.qstring = None
        print('isopened? ',self.db.isOpen())
        print('open? ',self.db.open())
        print('Last Error ', self.db.lastError().text())
        print('Drivers ', self.db.drivers())

        try:
            self.db.open()
            print('Check open? ', self.db.open())

        except Exception as e:
            if not self.db.open():
                print('DB open error', e)
            else:
                print('Error')

命令行输出如下:

Opening DB
Driver available?  True
isopened?  False
open?  False
Last Error  Driver not loaded Driver not loaded
Drivers  ['QSQLITE', 'QMYSQL', 'QMYSQL3', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7']
Check open?  False

我只是想知道我是否遗漏了一些明显的东西?谢谢。

最佳答案

事实证明,问题是我的脚本无法使用 libmysql.dll 加载 SQL 驱动程序。当我通过命令行(而不是通过 PyCharm)运行脚本时,出现错误:

QSqlDatabase: QMYSQL driver not loaded

此错误出现在 PyCharm 输出中,但我认为这是以前的错误。

运行时驱动程序可用:

print('Drivers ', self.db.drivers())

并获取输出:

Drivers  ['QSQLITE', 'QMYSQL', 'QMYSQL3', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7']

解决方案是将libmysql.dll的路径放入Windows环境变量中

关于python - Pyqt5 MySQL 数据库连接未使用 Python3 通过工作线程打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50504502/

相关文章:

python - Django rest framework api - 图片 url 未正确返回

python - 两列的内容未按预期显示 Django 和 Bootstrap 4

php - 无法获取我的购物车中商品的总金额

java - Elasticsearch:服务器状态503,Java IO异常

python - 通过使用 Python 将某些参数传递给它来执行 shell 脚本?

oracle - 安装面向 oracle-j2sdk1.7 的云管理器时安装失败

python - 不同的 YAML 数组表示

python - Django 1.8 错误 : 'NoneType' object is not callable

C# 使用 mysql 进行部署

mysql触发器更新nex列: Syntax error