我有一个带有MariaDB数据库的服务器,然后我有一个python程序,它在客户端运行,我有以下代码:
def Connect():
# Credential reading from register
servHost = RegRead("servHost")
servPort = RegRead("servPort")
dbName = RegRead("dbName")
__dbUser = RegRead("dbUser")
__dbPass = RegRead("dbPass")
con = QSqlDatabase.addDatabase('QODBC3')
driver = "DRIVER={MariaDB ODBC 3.1 Driver};"
database = f"Database={dbName};"
databaseName = driver+database
con.setDatabaseName(databaseName)
con.setHostName(servHost)
con.setPort(servPort)
if con.open(__dbUser, __dbPass):
print("Connected")
return True
else:
return False
我在一个pc机上做了我的程序,我有两个部分,所以数据库在localhost,我的pc机同时作为服务器和客户端工作,然后我把它改成了一个定义的主机。在我的pc机上工作的一切,但现在我已经分离了服务器和客户端,连接客户端时遇到问题。方法Connect()return False,我不知道我错过了什么。我还记得我安装了很多东西,让这个工作在我的电脑,但那是很久以前的事了,我不记得我做了什么。在客户端,我安装了MariaDB ODBC连接器,我有驱动程序“MariaDB ODBC 3.1驱动程序”,并创建了一个正确连接到数据库的用户DNS,但是当它在我的程序中运行时不会。它在我的pc中运行,所以我的代码应该是正确的。我想我错过了一些安装,可能是关于驱动程序或一些包,但我不知道是什么。服务器也工作,因为我可以使用户DNS。我没有安装MariaDB服务器(如果没有必要,我不会)。除了ODBC连接器,我没有安装任何东西,我只导入了QSqlDatabase包。
1条答案
按热度按时间mwngjboj1#
我解决了,
setHostName
方法和setPort
方法好像不起作用,我想是因为它需要一个QString对象作为参数,我是这样解决的,把主机名和端口添加到驱动程序中