15 votes

Connectez-vous à deux bases de données

Je souhaite me connecter à deux bases de données à l'aide de Python et, par la suite, utiliser les tables des deux bases de données. Comment puis-je le faire ? Le code suivant est-il correct ?

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

30voto

greut Points 2814

Si vous ne spécifiez pas la base de données dans votre fichier connect vous pouvez écrire des requêtes sur plusieurs bases de données à la fois. Le site documentation dit que db n'est pas nécessaire.

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

puis

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

Mais cela ne fonctionnera que si les deux bases de données sont sur le même serveur.

9voto

Johan Lundberg Points 5835

Il suffit de faire deux connexions séparées

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)

et les utiliser indépendamment comme vous le feriez en utilisant une seule base de données.

0voto

Nisha Rajnor Points 1

Vous avez deux possibilités :

1) Prenez les données dans un DataFrame pandas et utilisez-le pour créer une table dans le second serveur.

2) BCP sort les données du serveur 1 et les charge dans le second serveur.

-1voto

mbass Points 95

Les deux (ou plus) connexions peuvent vivre dans une seule variable, par exemple un dictionnaire. Cela devient très pratique si vous voulez effectuer une opération sur toutes les connexions en même temps. Par exemple, les fermer toutes. Voici un exemple :

connections = { 'conn1': mdb.connect(host, user, passwd, db), 'conn2': mdb.connect(host, user, passwd, db) }

Vous pouvez retrouver chaque connexion avec sa clé :

connections['conn1'].execute('SELECT ...')

Et vous pouvez fermer toutes les connexions en une seule ligne :

[conn.close() for key, conn in connections.items()]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X