Maison >base de données >tutoriel mysql >Comment effectuer des jointures inter-bases de données sur des serveurs distants à partir de Python à l'aide de MySQL ?

Comment effectuer des jointures inter-bases de données sur des serveurs distants à partir de Python à l'aide de MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-27 13:57:10368parcourir

How to Perform Inter-Database Joins on Remote Servers from Python Using MySQL?

MySQL : jointures inter-bases de données sur des serveurs distants à partir de Python

Défi : Effectuer des jointures de bases de données entre deux bases de données MySQL résidant sur des serveurs différents à l'aide de Python MySQLDB.

Solution :

Pour établir des connexions aux deux bases de données, créez des connexions MySQLDB pour chaque serveur en utilisant des paramètres de connexion distincts. Cependant, l'opération de jointure ultérieure ne peut pas être effectuée directement à l'aide de MySQLDB car elle ne dispose pas de fonctionnalités de jointure inter-serveurs.

Approches alternatives :

Moteur de stockage FÉDÉRÉ :
MySQL propose le moteur de stockage FEDERATED, vous permettant d'accéder aux tables de bases de données distantes comme si elles étaient locales. Utilisez la syntaxe suivante pour créer une table fédérée :

CREATE FEDERATED TABLE remote_table (
  column_1 data_type,
  column_2 data_type,
  ...
) ENGINE=FEDERATED
CONNECTION='mysql://username:password@server2/database_B';

Solution de contournement des serveurs liés :

Si l'utilisation de MySQL n'est pas réalisable, vous pouvez utiliser un autre SGBD prenant en charge les serveurs, tels que Microsoft SQL Server. Ici, vous pouvez créer un serveur lié pour vous connecter à la base de données A à partir de la base de données B et effectuer la jointure à l'aide de requêtes dans le SGBD middleware.

Implémentation en Python :

En fonction sur l'approche choisie :

FÉDÉRÉ Moteur :

import MySQLdb

# Create a connection to the local database
conn_local = MySQLdb.connect(...)

# Create a cursor for the local connection
cursor_local = conn_local.cursor()

# Execute a query to join the local table with the remote table
cursor_local.execute("""
  SELECT *
  FROM local_table
  INNER JOIN remote_table
  ON local_table.id = remote_table.id
""")

result = cursor_local.fetchall()

**Linked Servers Workaround:**

import pymssql

Établir une connexion au SGBD externe

conn_external = pymssql.connect(...)

Exécutez une requête pour récupérer les données des deux bases de données

cursor_external.execute("""
SELECT *
FROM linked_server_A.database_A.dbo.local_table
INNER JOIN linked_server_B.database_B.dbo.remote_table
ON linked_server_A.database_A. dbo.local_table.id = linked_server_B.database_B.dbo.remote_table.id
""")

result = curseur_external.fetchall()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn