我打开一个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异常处理。
答案 0 :(得分:0)
我按照“本杰明T”的建议解决了与“驱动程序可用但未加载”相关的类似问题,从而能够解决该问题。我将libmysql.dll从python 3.7 / lib / site-packages文件夹复制到python 3.7可执行文件文件夹,并能够加载驱动程序并连接到MySQL数据库。