Heim >Datenbank >MySQL-Tutorial >Wie führe ich datenbankübergreifende Verknüpfungen auf Remote-Servern von Python aus mit MySQL durch?

Wie führe ich datenbankübergreifende Verknüpfungen auf Remote-Servern von Python aus mit MySQL durch?

Barbara Streisand
Barbara StreisandOriginal
2024-11-27 13:57:10359Durchsuche

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

MySQL: Inter-Datenbank-Joins auf Remote-Servern von Python aus

Herausforderung: Führen Sie Datenbank-Joins zwischen zwei MySQL-Datenbanken durch, die sich auf verschiedenen Servern mit Python befinden MySQLDB.

Lösung:

Um Verbindungen zu den beiden Datenbanken herzustellen, erstellen Sie MySQLDB-Verbindungen für jeden Server mit separaten Verbindungsparametern. Der anschließende Join-Vorgang kann jedoch nicht direkt mit MySQLDB durchgeführt werden, da ihm die serverübergreifende Join-Funktionalität fehlt.

Alternative Ansätze:

FEDERATED Storage Engine:
MySQL bietet die FEDERATED-Speicher-Engine, mit der Sie auf Tabellen aus entfernten Datenbanken zugreifen können, als wären diese lokal. Verwenden Sie die folgende Syntax, um eine Verbundtabelle zu erstellen:

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

Problemumgehung für Verbindungsserver:

Wenn die Verwendung von MySQL nicht möglich ist, können Sie ein anderes DBMS verwenden, das Verknüpfungen unterstützt Server wie Microsoft SQL Server. Hier können Sie einen Verbindungsserver erstellen, um von Datenbank B aus eine Verbindung zu Datenbank A herzustellen und die Verknüpfung mithilfe von Abfragen innerhalb des Middleware-DBMS durchzuführen.

Implementierung in Python:

Abhängig zu Ihrem gewählten Ansatz:

FEDERATED Engine:

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:**

pymssql importieren

Verbindung zum externen DBMS herstellen

conn_external = pymssql.connect(...)

Führen Sie eine Abfrage aus, um Daten von beiden abzurufen Datenbanken

cursor_external.execute("""
SELECT *
FROM LinkedIned_server_A.database_A.dbo.local_table
INNER JOIN LinkedIned_server_B.database_B.dbo.remote_table
ON Linked_server_A.database_A. dbo.local_table.id = LinkedIn_Server_B.Database_B.DBO.Remote_Table.id

Das obige ist der detaillierte Inhalt vonWie führe ich datenbankübergreifende Verknüpfungen auf Remote-Servern von Python aus mit MySQL durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn