Pyqt5 MySQL数据库连接无法使用Python3通过工作线程打开

时间:2018-05-24 08:27:44

标签: 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

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

1 个答案:

答案 0 :(得分:0)

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

QSqlDatabase: QMYSQL driver not loaded

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

运行时可以使用驱动程序:

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

获得输出:

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

解决方案是将路径放在Windows环境变量

中的libmysql.dll中