Соединение с базой данных MySQL Pyqt5 не открывается через рабочий поток с использованием Python3

0

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

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

Просто чтобы описать, MySQL db находится в системе 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

Я просто хотел узнать, нет ли у меня чего-то очевидного? Благодарю.

Теги:
pyqt5
pyqt

1 ответ

0

Оказывается, проблема заключалась в том, что мой скрипт не смог загрузить драйвер 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню