Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 连接到两个数据库_Python_Mysql - Fatal编程技术网

Python 连接到两个数据库

Python 连接到两个数据库,python,mysql,Python,Mysql,我想使用Python连接到两个数据库,稍后使用这两个数据库中的表。我该怎么做?以下代码正确吗 con = mdb.connect(host=MY_HOST, user=MY_USER, passwd=MY_PASS, db1=MY_DB1, db2=MY_DB2) 只需要做两个独立的连接 con1 = mdb.connect (host=MY_HOST, user=MY_USER, passwd=MY_PASS, db1=MY_DB1) con2 = mdb.connect (host=MY_

我想使用Python连接到两个数据库,稍后使用这两个数据库中的表。我该怎么做?以下代码正确吗

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

只需要做两个独立的连接

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)

并像使用一个数据库一样独立使用它们。

如果在
connect
调用中未指定数据库,则可以一次对多个数据库编写查询。说明不需要
db

db = _mysql.connect('localhost', 'user', 'passwd')
然后


但是只有当两个数据库在同一台服务器上时,它才会工作。

您有两种可能:

1) 将数据放入一个数据框,并使用它在第二台服务器中创建表

2) BCP从server1中输出数据并将其加载到第二台服务器中

两个(或更多)连接可以存在于单个变量中,例如字典。如果您想同时对所有连接执行一个操作,这将非常方便。例如,关闭所有它们。下面是一个例子:

连接={
“conn1”:mdb.connect(主机、用户、密码、数据库),
“conn2”:mdb.connect(主机、用户、密码、数据库)
}

您可以使用其密钥检索每个连接:

connections['conn1'].执行('SELECT…')

您可以在一行中关闭所有连接:


[conn.close()用于键,conn-in-connections.items()]

您所说的“使用两个数据库中的表”是什么意思。是否要在单个查询中加入它们?这是不可能的。@Tichodroma是的,我想从数据库1连接tableA,从数据库2连接tableB,这两个数据库都在同一台服务器上。有可能吗?与我的答案相比,这样做有好处吗?一个连接对两个连接。为什么一个比两个好?性能、内存、易用性还是您的良好品味?两个连接意味着MySQL服务器打开两个套接字。选择数据库就像
使用thatdb
,因此默认情况下您会选择该数据库。如果您计划同时在多个数据库之间执行查询,那么不选择一个数据库可能会更简单,这实际上是一个品味问题。但是两个连接是不必要的。如果您想在它们之间切换,您可以始终执行cursor.exectue('USE otherDB')。无法工作,对吗?
[conn1]
处缺少单引号@我已经纠正了这个错误。我没有太多地关注语法。这只是一个简单的例子。
SELECT u.*, i.* FROM db1.users u LEFT JOIN db2.items i ON u.id = i.user_id