不稳定的 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 数据库。
我打开一个 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 数据库。