ошибочное поведение QSqlDatabase - PullRequest
0 голосов
/ 10 февраля 2019

Я открываю QSqlDatabase и загружаю параметр с помощью db.set [имя параметра], Ошибка подключения -db.open () и при проверке значения db.parameter возвращает пустую строку.Та же самая форма, используемая в других клиентских программах, работает отлично .... 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 при завершении работы программы.

1 Ответ

0 голосов
/ 11 февраля 2019

Мне удалось решить проблему, следуя совету Бенджамина Т по аналогичной проблеме, связанной с «Драйвер доступен, но не загружен».Я скопировал libmysql.dll из папки python 3.7 / lib / site-packages в исполняемую папку python 3.7 и смог загрузить драйвер и подключиться к базе данных MySQL.

...