2012-01-20 30 views
5

Quiero conectarme a dos bases de datos usando Python y, más tarde, usar tablas de ambas bases de datos. ¿Cómo puedo hacer esto? Es el siguiente código correcto?Conéctese a dos bases de datos

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

¿Qué quiere decir con "tablas de uso de ambas bases de datos". ¿Quieres unirte a ellos en una sola consulta? Eso no es posible. –

+0

@Tichodroma Sí, deseo unirme a tableA de database1 y tableB de database2, ambas bases de datos están en el mismo servidor. ¿Es posible? – manxing

+0

@manxing sí lo es. – greut

Respuesta

13

Si no especifica la base de datos en su llamada connect, puede escribir consultas en varias bases de datos a la vez. El documentation dice que db no es necesario.

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

continuación

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

Pero que sólo va a funcionar si las dos bases de datos están en el mismo servidor.

+0

¿hay alguna ganancia en hacerlo de esta manera en comparación con mi respuesta? –

+2

una conexión frente a dos conexiones. – greut

+0

¿Por qué es uno mejor que dos? rendimiento, memoria, facilidad de uso o simplemente su buen gusto? –

7

Sólo hacer dos conexiones independientes

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) 

y utilizarlos de forma independiente tal como lo haría cuando se utiliza una base de datos.

Para completar la respuesta: "¿Es correcto el siguiente código? ...". No, esa sintaxis no lo hará.

0

Tiene dos posibilidades:

1) tomar los datos en una trama de datos pandas y lo utilizan para crear la tabla en segundo servidor.

2) BCP a cabo datos de server1 y cargarlo en segundo servidor

+0

Utilice el formato adecuado. – SteveFest

Cuestiones relacionadas