首頁 >資料庫 >mysql教程 >如何使用 MySQL 從 Python 執行遠端伺服器上的資料庫間連線?

如何使用 MySQL 從 Python 執行遠端伺服器上的資料庫間連線?

Barbara Streisand
Barbara Streisand原創
2024-11-27 13:57:10410瀏覽

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

MySQL:透過Python 在遠端伺服器上進行資料庫間聯接

挑戰: 使用Python 在駐留在不同伺服器上的兩個MySQL 資料庫之間執行資料庫聯接MySQLDB。

解決方案:

要建立與兩個資料庫的連接,請使用單獨的連接參數為每個伺服器建立 MySQLDB 連接。但是,後續的 join 操作無法直接使用 MySQLDB 進行,因為它缺乏跨伺服器 join 功能。

替代方法:

FEDERATED 儲存引擎:
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 中的實現:

取決於根據您選擇的方法:

聯邦引擎:

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

建立與外部DBMS 的連線

conn_external = pymssql.connect(...)

執行查詢以從兩者檢索資料資料庫

cursor_external.execute("""

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。 linked_server_B.database_B.dbo.remote_table.id

""")

結果=cursor_external.fetchall()

以上是如何使用 MySQL 從 Python 執行遠端伺服器上的資料庫間連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn