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