我需要连接到两个不同的数据库和服务器。现在,我只能使用以下代码连接到一个数据库:
def createConnection()
global db
db = QSqlDatabase.addDatabase('QODBC')
db.setDatabaseName('DRIVER={SQL Server};SERVER=%s;DATABASE=%s;UID=%s;PWS=%s;' % (SERVER1, DATABASE1, USERNAME1, PASSWORD1))
if db.open():
print("connected")
return True
else:
print("failed")
return False
然后在我的代码中的某处调用这样的内容:
if createConnection():
qry = QSqlQuery(db)
qry.prepare("SELECT * FROM tbl_name")
qry.exec()
while qry.next()
col1 = qry.value("column1")
col2 = qry.value("column2")
现在,我还必须连接到另一个不同的数据库:SERVER2, DATABASE2, USERNAME2, PASSWORD2
。我该怎么办?
答案 0 :(得分:0)
为什么不创建接受变量的函数。
def createConnection(SERVER, DATABASE, USERNAME, PASSWORD)
global db
db = QSqlDatabase.addDatabase('QODBC')
db.setDatabaseName('DRIVER={SQL Server};SERVER=%s;DATABASE=%s;UID=%s;PWS=%s;' % (SERVER, DATABASE, USERNAME, PASSWORD))
if db.open():
print("connected")
return True
else:
print("failed")
return False
在调用时提供这些变量。
if createConnection(SERVER1, DATABASE1, USERNAME1, PASSWORD1):
qry = QSqlQuery(db)
qry.prepare("SELECT * FROM tbl_name")
qry.exec()
while qry.next()
col1 = qry.value("column1")
col2 = qry.value("column2")
答案 1 :(得分:0)
如果要多个连接,则必须为每个连接赋予唯一的名称。如果未提供名称,则将使用默认连接,并且将删除任何以前的连接。
所以您需要执行以下操作:
def createConnection(conn, server, dbase, user, pwd)
if QSqlDatabase.contains(conn):
QSqlDatabase.removeDatabase(conn)
db = QSqlDatabase.addDatabase('QODBC', conn)
db.setDatabaseName('DRIVER={SQL Server};SERVER=%s;DATABASE=%s;UID=%s;PWS=%s;' % (server, dbase, user, pwd))
if db.open():
print("connected")
return True
else:
print("failed")
return False
然后执行:
CONN1 = 'conn_01'
CONN2 = 'conn_02'
...
if createConnection(CONN1, SERVER1, DATABASE1, USERNAME1, PASSWORD1):
qry = QSqlQuery(QSqlDatabase.database(CONN1))
qry.prepare("SELECT * FROM tbl_name")
qry.exec()
while qry.next()
col1 = qry.value("column1")
col2 = qry.value("column2")