QSqlDatabase行为不稳定

时间:2019-02-10 12:15:13

标签: pyqt5 python-3.7 qsqldatabase

我打开一个QSqlDatabase并使用db.set [parameter Name]加载参数,连接-db.open()失败,当检查db.parameter的值时,它返回一个空字符串。在其他客户端程序中使用的相同形式也可以正常工作。

我正在从配置文件中加载参数。我试图像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异常处理。

1 个答案:

答案 0 :(得分:0)

我按照“本杰明T”的建议解决了与“驱动程序可用但未加载”相关的类似问题,从而能够解决该问题。我将libmysql.dll从python 3.7 / lib / site-packages文件夹复制到python 3.7可执行文件文件夹,并能够加载驱动程序并连接到MySQL数据库。