29 votes

MySQL - se joint à des bases de données sur différents serveurs utilisant Python?

En MySQL, j'ai deux bases de données différentes -- appelons - A et B.

La base de données A réside sur le serveur server1, tandis que la base de données B réside sur le serveur server2.

Les deux serveurs {A, B} sont physiquement proches les uns des autres, mais qui sont sur des machines différentes et ont des paramètres de connexion (nom d'utilisateur différent, différent du mot de passe, etc).

Dans un tel cas, est-il possible d'effectuer une jointure entre une table dans la base de données A, à une table dans la base de données B?

Si oui, comment dois-je faire, par programmation, en python? (Je suis aide d' pythons' MySQLDB d'interagir avec chacun des bases de données).

22voto

Devart Points 52715

Essayez d'utiliser FÉDÉRÉ Moteur de Stockage.

Solution: il est possible d'utiliser un autre SGBD pour récupérer des données entre deux bases de données, par exemple, vous pouvez le faire en utilisant des serveurs liés à MS SQL Server (voir sp_addlinkedserver procédure stockée). À partir de la documentation:

Un serveur lié permet l'accès distribuées, hétérogènes des requêtes sur des sources de données OLE DB.

3voto

Anatolij Points 424

C'est très simple - sélectionnez les données d'un serveur, sélectionnez les données d'un autre serveur et agrégez en utilisant Python. Si vous souhaitez avoir une requête SQL avec JOIN - mettre le résultat des deux serveurs dans des tables séparées dans la base de données locale SQLite et écrire SELECT avec JOIN .

3voto

Jaydee Points 3388

Pas de. Il n'est pas possible de faire la jointure que vous le souhaitez. Mais vous pouvez être en mesure de trier quelque chose par la réplication de l'un des serveurs à l'autre pour l'individu de la base de données.

Un ensemble de données est sous le contrôle d'une copie de MySQL et l'autre jeu de données est sous le contrôle de l'autre copie de MySQL. La requête ne peut être traitée par l'une des (MySQL) des serveurs.

Si vous créez une copie de la deuxième base de données sur le premier serveur ou vice versa (celui qui obtient le moins de mises à jour est le meilleur) vous pouvez configurer la réplication de garder la copie jusqu'à ce jour. Vous serez alors en mesure d'exécuter la requête que vous le souhaitez.

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