Соединение с базой данных MySQL Pyqt5 не открывается через рабочий поток с использованием Python3 - PullRequest
0 голосов
/ 24 мая 2018

У меня проблемы с подключением к моей базе данных mysql из моего рабочего потока pyqt.

Я могу подключиться к БД вручную через командную строку, но мой рабочий поток pyqt5, похоже, не может открыть БД.У меня есть доступные драйверы QMYSQL, и я временно установил полные привилегии для всех пользователей, которые входят в систему, чтобы исключить этот сценарий, и я ввел имя пользователя и пароль по умолчанию, но все равно не могу подключиться.

В общих чертах, база данных MySQL находится в системе Ubuntu, и я подключаюсь с ПК с Windows 10.

Вот мой код и выходные данные.

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 голосов
/ 24 мая 2018

Оказывается, проблема в том, что мой скрипт не смог загрузить драйвер SQL с помощью libmysql.dll.Когда я запустил скрипт через командную строку (а не через PyCharm), появилась ошибка:

QSqlDatabase: QMYSQL driver not loaded

Эта ошибка была в выводе PyCharm, однако я предположил, что это была предыдущая ошибка.

Драйверы были доступны при запуске:

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

И получение выходных данных:

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

Решением было поместить путь к libmysql.dll в переменные среды Windows

...