課題: Python を使用して、異なるサーバー上にある 2 つの MySQL データベース間でデータベース結合を実行します。 MySQLDB.
解決策:
2 つのデータベースへの接続を確立するには、個別の接続パラメータを使用してサーバーごとに MySQLDB 接続を作成します。ただし、MySQLDB にはクロスサーバー結合機能がないため、後続の結合操作を MySQLDB を使用して直接実行することはできません。
代替アプローチ:
FEDERATED Storage Engine:
MySQL は FEDERATED ストレージ エンジンを提供しており、リモート データベースからテーブルにローカルであるかのようにアクセスできます。次の構文を使用してフェデレーテッド テーブルを作成します:
CREATE FEDERATED TABLE remote_table ( column_1 data_type, column_2 data_type, ... ) ENGINE=FEDERATED CONNECTION='mysql://username:password@server2/database_B';
リンク サーバー 回避策:
MySQL の使用が不可能な場合は、リンクをサポートする別の DBMS を利用できます。 Microsoft SQL Server などのサーバー。ここでは、データベース B からデータベース A に接続するリンク サーバーを作成し、ミドルウェア DBMS 内のクエリを使用して結合を実行できます。
Python での実装:
選択したアプローチ:
FEDERATEDエンジン:
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
conn_external = pumblessql.connect(...)
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
""")
結果 =cursor_external.fetchall()
以上がMySQL を使用して Python からリモート サーバーでデータベース間結合を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。