pyqt5 mysql数据库连接未使用python3通过工作线程打开

0qx6xfy6  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(437)

我从pyqt工作线程连接mysql数据库时遇到问题。
我可以通过命令行手动连接到db,但是我的pyqt5工作线程似乎无法打开db。我有可用的qmysql驱动程序,我暂时为所有登录的用户设置了完全权限以排除这种情况,并且我将用户名和密码作为默认登录,但仍然无法连接。
简单地说,mysql数据库驻留在一个ubuntu系统上,我是从windows10个人电脑上连接的。
这是我到目前为止的代码和输出。

  1. class Worker(QThread):
  2. def __init__(self):
  3. super(Worker, self).__init__()
  4. print('Opening DB')
  5. self.db = QtSql.QSqlDatabase().addDatabase("QMYSQL")
  6. print('Driver available? ', self.db.isDriverAvailable("QMYSQL"))
  7. self.db.setHostName(192.168.56.1)
  8. self.db.setDatabaseName('Automation_DB')
  9. self.db.setUserName('root')
  10. self.db.setPassword('root')
  11. self.db.open()
  12. self.query = QSqlQuery(self.db)
  13. self.qstring = None
  14. print('isopened? ',self.db.isOpen())
  15. print('open? ',self.db.open())
  16. print('Last Error ', self.db.lastError().text())
  17. print('Drivers ', self.db.drivers())
  18. try:
  19. self.db.open()
  20. print('Check open? ', self.db.open())
  21. except Exception as e:
  22. if not self.db.open():
  23. print('DB open error', e)
  24. else:
  25. print('Error')

命令行输出如下:

  1. Opening DB
  2. Driver available? True
  3. isopened? False
  4. open? False
  5. Last Error Driver not loaded Driver not loaded
  6. Drivers ['QSQLITE', 'QMYSQL', 'QMYSQL3', 'QODBC', 'QODBC3', 'QPSQL', 'QPSQL7']
  7. Check open? False

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

hgc7kmma

hgc7kmma1#

原来问题是我的脚本无法使用libmysql.dll加载sql驱动程序。当我通过命令行(而不是通过pycharm)运行脚本时,出现一个错误:

  1. QSqlDatabase: QMYSQL driver not loaded

这个错误在pycharm输出中,但是我假设这是以前的错误。
运行时驱动程序可用:

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

获取输出:

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

解决方案是将libmysql.dll的路径放在windows环境变量中

相关问题