我在从 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/