我希望使用Python连接到两个数据库,稍后使用两个数据库中的表。我怎样才能做到这一点?以下代码是否正确?
con = mdb.connect(host=MY_HOST, user=MY_USER, passwd=MY_PASS, db1=MY_DB1, db2=MY_DB2)
答案 0 :(得分:14)
如果未在connect
调用中指定数据库,则可以一次针对多个数据库编写查询。 documentation表示不需要db
。
db = _mysql.connect('localhost', 'user', 'passwd')
然后
SELECT u.*, i.* FROM db1.users u LEFT JOIN db2.items i ON u.id = i.user_id
但只有当两个数据库位于同一台服务器上时才能正常工作。
答案 1 :(得分:7)
只需进行两次单独的连接
con1 = mdb.connect (host=MY_HOST, user=MY_USER, passwd=MY_PASS, db1=MY_DB1)
con2 = mdb.connect (host=MY_HOST2, user=MY_USER2, passwd=MY_PASS2, db2=MY_DB2)
并独立使用它们,就像使用一个数据库一样。
要完成答案: “以下代码是否正确?......”。 不,该语法不会这样做。
答案 2 :(得分:0)
您有两种可能性:
1)将数据导入pandas DataFrame并使用它在第二台服务器中创建表。
2)BCP输出来自server1的数据并将其加载到第二个服务器
答案 3 :(得分:-1)
两个(或多个)连接可以存在于单个变量中,例如一本字典。如果要一次对所有连接执行一项操作,这将非常方便。例如关闭所有它们。这是一个示例:
connections = {
'conn1': mdb.connect(host, user, passwd, db),
'conn2': mdb.connect(host, user, passwd, db)
}
您可以使用其键检索每个连接:
connections['conn1'].execute('SELECT ...')
您可以在一行中关闭所有连接:
[conn.close() for key, conn in connections.items()]