2012-01-20 131 views
5

我想使用Python連接到兩個數據庫,稍後使用來自兩個數據庫的表。我怎樣才能做到這一點?以下代碼是否正確?連接到兩個數據庫

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

你是什麼意思「從這兩個數據庫使用表」的意思。你想加入他們在一個單一的查詢?這是不可能的。 – 2012-01-20 11:11:59

+0

@Tichodroma是的,我想從database1連接tableA和從database2連接tableB,兩個數據庫都在同一臺服務器上。可能嗎? – manxing

+0

@manxing是的。 – greut

回答

13

如果您在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 

它只會如果這兩個數據庫是在同一臺服務器上運行。

+0

與我的回答相比,這樣做有什麼收穫嗎? –

+2

一個連接vs兩個連接。 – greut

+0

爲什麼一個比兩個好?性能,記憶力,易用性還是您的品味? –

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) 

,並使用一個數據庫時,獨立使用它們,就像你。

要完成答案: 「以下代碼是否正確?...」。不,這種語法不會這樣做。

0

你有兩種可能性:

一)以數據爲大熊貓數據幀,並用它在第二個服務器創建表。在Server1

2)BCP出數據,並將其加載到第二個服務器

+0

請使用正確的格式。 – SteveFest