2012-01-20 21 views
5

Desidero connettermi a due database utilizzando Python e, in seguito, utilizzare tabelle da entrambi i database. Come posso fare questo? Il seguente codice è corretto?Connessione a due database

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

Che cosa si intende per "tavola degli impieghi da entrambi i database". Vuoi unirti a loro in una singola query? Non e possibile. –

+0

@Tichodroma Sì, desidero unire la tabellaA da database1 e da tabellaB da database2, entrambi i database si trovano sullo stesso server. È possibile? – manxing

+0

@manxing sì lo è. – greut

risposta

13

Se non si specifica il database nella chiamata connect, è possibile scrivere query su più database contemporaneamente. Il documentation dice che db non è richiesto.

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

poi

SELECT u.*, i.* FROM db1.users u LEFT JOIN db2.items i ON u.id = i.user_id 

Ma che funzionerà solo se i due database sono sullo stesso server.

+0

c'è un vantaggio nel farlo in questo modo rispetto alla mia risposta? –

+2

una connessione vs due connessioni. – greut

+0

Perché uno è meglio di due? prestazioni, memoria, facilità d'uso o solo il tuo buon gusto? –

7

Basta fare due connessioni separate

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) 

e li usa in modo indipendente proprio come si farebbe quando si utilizza un database.

Per completare la risposta: "Il seguente codice è corretto? ...". No, quella sintassi non lo farà.

0

Avete due possibilità:

1) Prendere i dati in un dataframe panda e utilizzarlo per creare la tabella nel secondo server.

2) BCP fuori dati da server1 e caricarlo nel secondo server

+0

Utilizzare una formattazione corretta. – SteveFest