连接到两个数据库

时间:2012-01-20 11:00:09

标签: python mysql

我希望使用Python连接到两个数据库,稍后使用两个数据库中的表。我怎样才能做到这一点?以下代码是否正确?

con = mdb.connect(host=MY_HOST, user=MY_USER, passwd=MY_PASS, db1=MY_DB1, db2=MY_DB2)

4 个答案:

答案 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()]