不稳定的 QSqlDatabase 行为

erratic QSqlDatabase behavior

我打开一个 QSqlDatabase 并使用 db.set[参数名称] 加载参数,连接 -db.open() 失败,当检查 db.parameter 的值时它 returns 一个空字符串。在其他客户端程序中使用的相同表单完美地工作....sic

我正在从配置文件加载参数。我尝试像 db.setUserName('someuser') 一样手动加载它们,结果相同。调试,检查 db.userName() 时我得到了 str ''。数据库自然不会打开。可能跟数据库打开时的环境有关?

@pyqtSlot()                                                                                              
def connectionTest(self):                                                                                
    self.lblTestResult.setText("Connecting to MYSQL server........")                                     
    self.lblTestResult.setStyleSheet("QLabel{background-color: yellow; color: black}")                   
    testMessage = "Connection Failed"                                                                    
    self.con_string = self.read_db_config()                                                              
    try:                                                                                                 
        db = QSqlDatabase.addDatabase("QMYSQL")                                                          
        db.setHostName(self.con_string['host'])                                                          
        db.setUserName(self.con_string['user'])                                                          
        db.setDatabaseName(self.con_string['database'])                                                  
        db.setPassword(self.con_string['password'])                                                      
        ok = db.open()                                                                                   
        if ok:                                                                                           
            testMessage = "Connection Succeeded"                                                         
            self.state = True                                                                            
            self.lblTestResult.setStyleSheet("QLabel{background-color: green; color: white}")            
        else:                                                                                            
            self.lblTestResult.setStyleSheet("QLabel{background-color: red; color: white}")              
        self.lblTestResult.setText(testMessage)                                                          
    except Exception as err:                                                                             
        self.lblTestResult.setText(err)                                                                  
    finally:                                                                                                                                      

我希望加载参数并成功打开数据库。我已经处理这个问题一段时间了,但没有找到任何线索。 旁注:我正在使用 Exception 来克服关闭程序的 PyQt5 异常处理。

我能够根据 'Benjamin T' 就与 "Driver available but not loaded" 相关的类似问题提出的建议解决问题。我将 libmysql.dll 从 python 3.7/lib/site-packages 文件夹复制到 python 3.7 可执行文件夹,并且能够加载驱动程序并连接到 MySQL 数据库。